|
pytest测试框架:
接口自动化、单元测试、用例设计、测试报告
与unittest相似
unittest框架功能更多
pytest命名规则:
1.用例文件名必须是test_开头或_test结尾
2.测试用例类必须是Test开头
3.测试用例方法必须是Test开球
4.不能有狗仔_init__()或析构方法__def__()
serup()/teardown()
断言:assert 条件
默认情况,pytest按照代码顺序来执行各用例
在同一个类中各用例方法按照代码书写顺序来执行
在同一目录中的各测试用例文件按字典顺序执行
有两种执行方式:
1.cmd命令行执行:
pytest xx.py yy.py
2.在IDE工具中运行
pytest.main()#自动运行当前目录下所有符合条件的文件
pytest.main(['-s','文件名1','文件名2',...]) '-s'查看打印输出内容
参数:
文件名::类名::方法名
-s
-v 出现类名和方法名
-k 匹配的内容
-m 组名 :运行在组里的方法 也可以反过来用:-m not 组名 须与@pytest.mark.组名 配合使用
--html=地址/文件名.html :生成测试报告
--count=n :测试用例运行n次,但是与@pytest.mark.repeat一起用时,repeat会覆盖掉count
pytest框架:
Obj 存放被测的目标(比如接口程序)
xx接口功能代码
Tc 存放测试用例(test_xx.py文件)
T
Run 存放执行/调用程序
安装pytest_ordering包后
测试用例临时不执行,方法前加@pytest.mark.skip()
设置运行顺序 @pytest.mark.run(order=2)
@pytest.mark.laster
分组@pytest.mark.组名
Obj
xx接口功能
Tc
Run
多次、迭代、参数化
pip install pytest-repeat
@pytest.mark.repeat(n) #让用例方法允许n次
@pytest.mark.repeat(2)#让下列方法运行2次
def testAsc(self):
...
@pytest.mark.parametrize("参数名称",[参数值1,参数值2,...])向方法中的参数传递参数值,运行多次
@pytest.mark.parametrize("num",[1,0])
def testaccesstoken(self,num):
...
@pytest.fixture()
scope:作用范围,设置范围后,会根据设置的范围去触发执行。
范围可选值:function:每个方法(函数)都会执行一次。(默认)
class:每个类都会执行一次。类中有多个方法调用,只在第一个方法调用时执行。
module:一个.py文件执行一次。一个.py文件可能包含多个类和方法。
package/session:多个文件调用一次,可以跨.py文件。
@pytest.fixture(scope='module')
params:传入参数,接收一个列表,列表中每个数据都作为用例的输入
@pytest.fixture(params=[参数值1,参数值2,...])
@pytest.fixture(params=[1,2,3])
def test22(self,req):
print('测试用例test22'+req.param)
autouse:在一个session内所有的test都会自动调用当前的fixture,默认为false
ids:测试字符串id的列表,每个测试字符串id对应于params,默认为参数值
name:fixture的名称,默认为装饰函数的名称
|
|