自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

刘春明的博客

关注软件的自动化测试与持续集成,欢迎关注“明说软件测试”公众号

  • 博客(26)
  • 论坛 (1)
  • 收藏
  • 关注

原创 测试开发之Python核心笔记(11):列表相关算法

程序设计中,有一种最最基础的数据结构是数组,数组把相同类型的若干个元素按连续顺序存储在内存中。数组通过索引来记录元素的位置。大多数编程语言中,数组的索引从0开始。如果索引超出了数组的范围,会报数组越界异常。在Python中,数组中的元素类型不要求必须保持一致,而且支持负数索引,比如-1表示数组中最后一个元素。在Python中,数组被封装成列表(List),是一种容器类型,具有更多的高级功能。例如:列表将数组插入、删除数据时搬移其他数据的操作进行了封装。列表支持动态扩容。在项目开发中,对于业务开发

2020-08-27 18:00:28 191

原创 测试开发之Python核心笔记(19): 深入理解类的属性

属性作为类的重要组成部分,除了平时常用的读取和设置操作之外,还有很多隐藏的、高级的操作。比如属性的查找顺序、属性的类型检查、限制属性的动态添加等等。这一小节,就让我们深入理解属性的各种高级操作。19.1 通过字符串操作属性和方法反射是一个很重要的概念,它可以把字符串映射到实例的属性或者方法,然后可以去执行调用、修改等操作。Python提供了四个函数,可以通过字符串操作属性和方法:hasattr、getattr、setattr和delattr。但是要注意属性和方法不能是私有的,如果是以“_”开头的属性和

2020-08-13 19:16:25 296

原创 测试开发之Python核心笔记(26): 协程

协程是实现并发编程的一种方式。 Python 3.7 以上版本中,使用协程写异步程序非常简单。26.1 同步与异步我们首先来区分一下 Sync(同步)和 Async(异步)的概念。所谓 Sync,是指操作一个接一个地执行,下一个操作必须等上一个操作完成后才能执行。而 Async 是指不同操作间可以相互交替执行,如果其中的某个操作被 block 了,程序并不会等待,而是会找出可执行的操作继续执行。从而可以提高效率。26.2 Asyncio原理Python使用Asyncio库进行异步编程。Async

2020-08-12 17:50:47 488 1

原创 测试开发之Python核心笔记(25): 多进程与多线程

25.1 并发和并行并发Concurrency工作互相切换,如线程切换和任务切换多线程(线程切换)、协程(任务切换)并行Parallelism同一时刻、同时发生多进程并行还是并发?并发通常应用于 I/O 操作频繁的场景,比如你要从网站上下载多个文件,I/O 操作的时间可能会比 CPU 运行处理的时间长得多。而并行则更多应用于 CPU heavy 的场景,比如 MapReduce 中的并行计算,为了加快运行速度,一般会用多台机器、多个处理器来完成。25.2 多线

2020-08-12 17:47:36 166

原创 测试开发之Python核心笔记(24):日志

日志主要目的是在程序运行过程中,输出我们感兴趣的内容,以便程序出现异常时,我们根据日志排查问题。Python中内置的日志模块是logging。24.1 日志级别日志输出的内容是分等级的,我们可以根据等级控制输出的内容。可以通过help(loggging)查看日志帮助文档,文档最下方列出了Python支持的日志级别。DATABASIC_FORMAT = ‘%(levelname)s:%(name)s:%(message)s’CRITICAL = 50DEBUG = 10ERROR = 40F

2020-08-12 17:22:09 184

原创 测试开发之Python核心笔记(23):抽象类、枚举类与元类

23.1 抽象类抽象类是一种特殊的类,只能有抽象方法(没有实现功能),有两个典型特点:不能被实例化,只能被继承。强制子类必须实现抽象方法,使用相同的方法和方法名称。抽象类的本质还是类,指的是一组类的相似性,包括数据属性(如all_type)和函数属性(如read、write),通常用作类似JAVA中接口的作用,用来规范子类的行为。让每个人可以关注抽象类的方法和描述,而不需要考虑过多的实现细节,通过抽象类操作具体类的实例。看一个例子:from abc import ABCMeta, abst

2020-08-12 14:38:49 165

原创 测试开发之Python核心笔记(22):组合、继承与多态

20.1 多用组合不同的类可以混合使用,加入到其他类中,来增强类的功能和代码重用性。也就是一个类的属性可以是其他类的实例。当类之间有显著不同,并且较小的类是较大的类所需要的组件时,用组合比较好。来看一个例子:class Name: def __init__(self, first_name, last_name): self.first_name = first_name self.last_name = last_name def __str__(s

2020-08-12 14:23:43 651 3

原创 测试开发之Python核心笔记(21):对象的比较与拷贝

21.1 变量与对象的关系Python中任何事物都是对象,包括变量、函数和类,都是对象。表达式a=‘s’中的字符串’s’就是对象。换句话说,变量a指向了对象’s’。变量就相当于一个标签,这个标签标识了一个对象。每一个对象都是由三部分组成:标识符(identity)、类型(type)、值(value)组成。标识符:每个对象都有唯一的标识,来标识自己,可以使用内置函数id()来查看对象的标识。例如查看变量a的标识,标识可以简单的认为这个值是该对象的内存地址:>>> id(a)4310

2020-08-11 17:28:00 114

原创 测试开发之Python核心笔记(20): 类内置高级方法

当我们定义了一个类之后,Python会自动为我们提供一些方法,这些方法大部分是从object类或者type类继承来的。我们可以覆盖这些方法实现特定的操作。20.1 让对象打印出来更易读用print()打印对象,会展示__str__()函数的内容,直接运行实例的时候,打印的对象,会展示__repr__()函数的内容。因此可以通过实现__str__()和__repr__()这两方法,让对象打印出来更符合人类阅读。比如class Student: def __init__(self, name, a

2020-08-11 16:58:34 487 1

原创 测试开发之Python核心笔记(18): 类与对象入门

Python是面向对象编程语言。面向对象编程中两个最基本的概念就是类和对象。类是一群有着相同属性和函数的一类对象的模板,类实例化后产生对象。在Python中创建一个类和对象是很容易的。18.1 定义一个类使用 class 语句来创建一个新类,class 之后为类的名称并以冒号结尾,通常类名首字母大写:下面是一个类的例子:class Document: """ 这是一个文档字符串 """ # 类变量 WELCOME_STR = 'Welcome! The contex

2020-08-10 14:40:36 128

原创 测试开发之Python核心笔记(17): 调试程序

17.1 为什么要调试代码本身有问题,需要我们找到 root cause 并修复代码效率有问题,比如过度浪费资源,latency很大,因此需要我们 debug在开发新的 feature 时,一般都需要测试阅读开源项目时,通过调试了解处理逻辑17.2 调试方法17.2.1 print调试法对于简单的程序,使用print函数输出可以进行调试。但是对于大型程序,怀疑出错的地方可能很多,就可能代码中需要写大量的print函数。调试完毕后,还要再删除掉。显然比较麻烦。17.2.2 Pycharm断

2020-08-09 17:26:57 785 1

原创 测试开发之Python核心笔记(16):模块与包

16.1 概念函数、类、常量拆分到不同的.py文件,这些文件就是模块将多个模块放到一个文件夹中,这个文件夹就是包,包中通常还包含一个文件__init__.py,表述包对外暴露的模块接口。内容也可以为空,并不是必须的。通过模块和包组织的项目,组织结构看起来更加清晰,例如基于Pytest的自动化测试项目的结构:├── Pipfile├── Pipfile.lock├── config│ ├── prod│ └── test├── conftest.py├── data│ └

2020-08-09 17:05:01 113

原创 测试开发之Python核心笔记(15):迭代器与生成器

15.1 可迭代对象Iterable还记得for循环吗?for循环可以循环迭代处理字符串以及列表、元组、字典、集合这些容器类型,知道为什么这些数据类型可以被for迭代吗?因为这些对象都是可迭代对象。判断是否是可迭代对象,可以isinstance(obj, Iterable)判断,输出True表示obj对象是可迭代的(iterable)。15.2 迭代器iterator通过迭代器,程序员可以迭代非序列类型,就是除了列表、元素、字典和集合之外类型。迭代器通过next()方法获取对象中的下一个元素,可以

2020-08-09 16:52:51 720 1

原创 测试开发之Python核心笔记(14): 装饰器

14.1 概念所谓的装饰器,其实就是通过装饰器函数,来修改原函数的一些功能,使得原函数不需要修改。装饰器依赖前面介绍的Python函数的五个特性:函数也是对象函数对象可以赋值给变量函数对象可以作为参数传递给另外的函数函数对象可以作为另外一个函数的返回值函数可以嵌套定义14.2 函数装饰器14.2.1 装饰器的简单例子my_decorator() 是一个装饰器,它把真正需要执行的函数 func() 包裹在其中,并且改变了它的行为,但是原函数 func不变。定义装饰器分三步走:调用原函

2020-08-09 16:50:26 139

原创 测试开发之Python核心笔记(13):递归函数

13.1 概念在函数内部,可以调用其他函数。如果一个函数在内部调用自身,这个函数就是递归函数。理论上,所有的递归函数都可以写成循环的方式,但循环的逻辑不如递归清晰。计算阶乘n! = 1 x 2 x 3 x … x n,用函数fact(n)表示:def fact(n): if n==1: return 1 return n * fact(n - 1)13.2 写递归代码的套路写递归代码的关键就是找到如何将大问题分解为小问题的规律,然后按照下面套路即可实现:第一步,写出

2020-08-09 16:44:04 163

原创 测试开发之Python核心笔记(12): 匿名函数与高阶函数

12.1 定义匿名函数匿名函数应用非常广泛。常用在不方便定义常规函数的地方,作为参数的值来使用。lambda开头 接着参数列表,接着冒号,后面是表达式,函数返回值就是表达式的值。lambda x: x**2可以赋值给变量:>>> square = lambda x: x**2>>> square(3)912.2 匿名函数的用处用在常规函数 def 不能用的地方,比如,用在列表内部[(lambda x: x*x)(x) for x in

2020-08-09 16:42:03 506

原创 测试开发之Python核心笔记(10):Python函数

10.1 定义函数使用def关键字函数可以有返回值也可以没有返回值# content of test_sample.pydef inc(x): # 有返回值 return x + 1def test_answer(): # 没有返回值 assert inc(3) == 510.2 调用函数add_one=inc(3)函数被调用时,这个函数此前必须定义过10.3 函数的参数10.3.1 位置参数def divmod(x, y): # known

2020-08-09 16:37:03 191

原创 测试开发之Python核心笔记(9):时间与日期

时间在编程中应用广泛:日志、统计程序性能、统计函数执行时长等。Python 与时间处理相关模块有:time 模块和 datetime 模块。9.1 time模块在 Python 文档里,time是归类在Generic Operating System Services中,换句话说, 它提供的功能是更加接近于操作系统层面的。time 模块是围绕着 Unix Timestamp 进行的。五个常用函数:获取当前时间戳timestamp = time.time() # 1590465647.9812.

2020-08-09 12:50:27 124

原创 测试开发之Python核心笔记(8):错误与异常

8.1 概念程序中的错误通常包括两种,一种是语法或逻辑错误,另一种则是运行时的异常。Python3版本的异常类型请参考:https://docs.python.org/3/library/exceptions.html。为了程序的健壮,代码要对可预知的异常进行处理。8.2 处理异常8.2.1 try…except通常使用 try 和 except 来解决异常。try: s = input('please enter two numbers separated by comma

2020-08-09 12:47:00 107

原创 测试开发之Python核心笔记(7):输入与输出

输入输出的设备主要有键盘、屏幕、网卡、文件等。7.1 键盘和屏幕input接收键盘的输入,得到的是字符串,name = input('your name:'),要想的到数字,需要进行类型转换print输出到屏幕,print(“Hello world”)7.2 文件路径对文件系统的访问,大多通过Python的os模块实现。该模块是Python访问文件系统功能的主要接口。通过下面代码可以查看os模块的全部功能。>>> import os>>.

2020-08-09 12:44:33 232

原创 测试开发之Python核心笔记(6):分支与循环

6.1 分支根据不同条件,进入到不同的处理逻辑逻辑中,条件判断使用if语句。条件判断最好是显性的,写的明明白白的。6.1.1 两个分支例如,取绝对值:if x < 0: y = -xelse: y = x再如,取两个数中的较小值,可以写在同一行:smaller = x if x< y else y上面取绝对值的代码也可以写在一行:absolute= x if x>0 else -x条件表达式用 in 或者not in可以大大简化代码,比如:cm.

2020-08-09 12:40:04 126

原创 测试开发之Python核心笔记(5):字典与集合

5.1 字典字典是一系列由键(key)和值(value)配对组成的元素的集合。键不能重复,Python中大部分对象可以作为key,但是key必须是可哈希的,列表、字典这类不能作为key,元组可以。在 Python3.7+以后,字典记住了插入的顺序。内部是哈希表存储结构,查找、添加和删除操作效率非常高,都能在O(1)复杂度内完成。5.1.1 声明字典创建字典的方法很简单,使用一对中括号 {},键值对中间用冒号,每项间使用逗号分割。d1 = {'name': 'jason',

2020-08-09 12:36:41 176

原创 测试开发之Python核心笔记(4):列表与元组

元组和列表都是容器,容器里面可以放各种类型的数据,同一个列表,允许放不同数据类型的数据。4.1 声明声明列表两种方法:inibasenames = ["pytest.ini", "tox.ini", "setup.cfg"] # 测试框架pytest的3类配置文件,推荐pytest.ini,通常放到项目根目录li = list("requests") # ['r', 'e', 'q', 'u', 'e', 's', 't', 's']lis = list(range(10)) # [0, 1

2020-08-09 12:33:25 190

原创 一步一步开发一个Dubbo框架的小Demo以及如何用Java和Python调用Dubbo接口

这是一个基于spring+dubbo开发的小demo。主要用于学习基于spring+dubbo框架的开发流程。用将此项目作为学习使用python进行dubbo接口测试的服务端程序。1. 创建Dubbo项目1.1 使用Maven创建多模块项目因为这是一个demo项目,我希望将dubbo provider和comsumer都放到一个工程中方便管理。所以我这里创建了一个Maven多模块工程。操作步骤如下:打开IntelliJ IDEA——>File——>New——>Project.

2020-08-09 09:55:18 207

原创 测试开发之Python核心笔记(3):数值与随机数

3.1 数值类型Python支持的数值类型有整型int、布尔型bool、浮点型float、Decimal。type(100) # <class 'int'>type(1.0) # <class 'float'>type(True) # <class 'bool'>type(False) # <class 'bool'>这里要提一下,布尔型是只有两个值的整数。True对应1,False对应0。对于布尔型要从以下方面理解:有两个值True

2020-08-05 18:50:20 159

原创 测试开发之Python核心笔记(2):字符串与正则表达式

2.1 字符串表示表示一个字符串就是用引号将一连串字符包裹起来,或者使用str()构造器。单引号’’双引号 “”三引号之中(’’’ ‘’'或""" “”",两者一样)构造器str()打开Pycharm集成开发环境,输入下面的代码:a = 'This is a string' # 用单引号b = "Selenium automates browsers. That's it!" # 如果字符串内容包含单引号,那么最好用双引号将其括起来c = """ # 用三个引号,定义多行字符串

2020-08-05 18:33:16 317

空空如也

liuchunming033的留言板

发表于 2020-01-02 最后回复 2020-01-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除