
(二)pytest之测试用例的运行方式及执行顺序
一些关于pytest学习笔记~其中有些点参考
根据B站视频进行实操整理的一些关于pytest学习笔记~
一、pytest测试用例的运行方式
1、主函数模式
- 运行所有用例:执行pytest.main()
参数详解:
-s:表示输出调试信息,包括print打印的信息
-v表示详细的信息,一般以“-vs”使用
-n支持分布式运行或多线程运行测试用例如下图所示
--reruns num :表示失败用例重跑例如pytest.main(['-vs','./testcase','-n=2'])
-x表示只要有一个用例报错,那么测试停止
--maxfail=2出现2个用例失败就停止
- 指定模块运行如下图:
- 指定文件夹运行如下图:
- 通过nodeid制定用例运行:nodeid由模块名,分隔符::,类名,方法名,函数名组成,
指定函数:pytest_main(['-vs','./interface_testcase/test_interface.py::test_04_func'])
指定方法:pytest_main(['-vs','./interface_testcase/test_interface.py::TestInterface::test_03_bianggan'])
指定函数运行如下图:
2、命令行模式
- 运行所有用例:在终端输入pytest命令
-s:表示输出调试信息,包括print打印的信息
-v表示详细的信息,一般以“-vs”使用
-n支持分布式运行或多线程运行测试用例如: pytest -vs ./testcase -n 2,使用到的插件为pytest-xdist,示例图如下:
--reruns num 表示失败用例重跑例如pytest -vs ./testcase --reruns 2,使用到的插件是pytest-rerunfailures
-x表示只要有一个用例报错,那么测试停止(运用较少)
--maxfail 2出现2个用例失败就停止(运用较少)
-k根据测试用例的部分字符串指定用例(运用较少),例如:pytest -vs ./testcase -k "ao"
- 指定模块运行切换到测试用例的目录路径下在终端执行pytest -vs test_login.py,如下图:
3、通过读取pytest.ini配置文件运行(企业中最常用)
pytest.ini是一个手动创建的配置文件,用于读取整个项目的配置信息,pytest将按此配置文件中指定的方式去运行,并可以改变pytest的默认行为。pytest.ini配置文件存放在项目的根目录,文件名称固定不可修改。文件内容如下:
[pytest]
addopts = -vs --html ./report/report.html #命令行的参数,用空格分隔
testpaths = ./testcase #测试用例的路径
python_feil = test_*.py #模块名的规则
python_classes = Test* #类名的规则
python_functions = test #方法名的规则
二、pytest执行测试用例顺序
- unitest: 按照ASCII码的大小来绝对的执行顺序自行
- pytest: 默认按照从上向下的执行顺序,改变默认的执行顺序:使用mark标记, 标记测试用例执行顺序,例如:@pytest.mark.run(order=1),1代表第一个执行,2代表第二个执行,使用到的插件为pytest-ordering
三、分组执行(冒烟、分模块执行、分接口执行)
- 在pytest.ini文件中增加markers,即增加分组:
[pytest]
addopts = -vs --html ./report/report.html #命令行的参数,用空格分隔
testpaths = ./testcase #测试用例的路径
python_feil = test_*.py #模块名的规则
python_classes = Test* #类名的规则
python_functions = test #方法名的规则
markers = #分组
smoke:冒烟用例
usermanage:用户管理模块
productmanage:商品管理模块
- 在用例前增加标记例如@pytest.mark.smoke或@pytest.mark.usermanage
- 在终端输入pytest -vs -m "smoke or usermanage"
四、pytest跳过测试用例
- 有条件跳过(在用例前面加上@pytest.mark.skipif(age>=18,reason = '已成年'))
- 无条件跳过(在用例前面加上@pytest.mark.skip)
更多推荐
所有评论(0)