pytest 使用总结
转载自:https://www.cnblogs.com/returnes/p/14302422.html
pyttest-html # 生成html格式的自动化测试报告
pytest-xdist # 测试用例分布执行,多cpu分发
pytest-ordering # 用于改变测试用例的执行顺序
pytest-rerunfailures # 用例失败后重跑
allure-pytest #用于生成美观的测试报告
二、pytest常用规则
1、模块名必须以test开头或者test结尾;
2、测试类必须以Test开头,并且不能有init方法;
3、测试函数或方法必须以test开头;
三、pytest测试用例的运行方式
1、主函数模式
(1)运行所有:pytest.main()
(2)指定模块:pytest.main(['-vs','test_login.py'])
(3)指定目录:pytest.main(['-vs','./interface_testcase'])
(4)通过nodeid指定用例运行:nodeid有模块名、分隔符、类名、方法名、函数名组成 pytest.main(['-vs','./interface/test_interface::test_login.py'])
2、主函数模式
(1)运行所有:pytest
(2)指定模块:pytest -vs test_login.py
(3)指定目录:pytest -vs./interface_testcase | 命令 pytest 测试目录路径
(4)通过nodeid指定用例运行:pytest -vs ./interface/test_interface::test_login.py
3、参数详解:
-s :表示输出调试信息、包括打印信息
-v :显示更详细的信息、包括所执行文件路径nodeid
-vs :组合
-n :支持多线程或者分布式运行测试用例,pytest -vs test_login.py -n2
-reruns NUM :失败用例重跑
-x :表示只要一个用例报错,那么测试停止
--maxfail=2 :出现两个用例失败就停止
-k :根据测试用例的部分字符模糊匹配测试用例,如:pytest -vs ./TestCase -k "login" --html ./report/report.html:生成测试报告
4、通过pytest.ini配置文件运行
pytest.ini 文件是单元测试框架核心配置文件
1、位置:一般放在项目根目录
2、编码:必须为ANSI,可以使用notpad++修改编码格式
3、作用:改变pytest默认的行为
4、运行的规则:不管主函数的模式运行,命令行模式运行,都会去读取这个配置文件
[pytest]
• addopts = -vs --html ./report/report.html #命令行的参数,用空格分隔
• testpaths = ./testcase #测试用例的路径
• python_files = test_*.py #模块名的规则
• python_classes = Test* #类名的规则
• python_functions = test #方法名的规则
• markers=
• smoke:冒烟用例
• usermanage:用户管理模块
• productmanage:商品管理模块
四、pytest执行测试用例的顺序
1、unittest:ascll的大小顺序执行
2、pytest:默认从上到下
3、改变默认执行顺序:使用mark标记, 如:@pytest.mark.last @pytest.mark.run(order=2)
五、分组执行,可区分web和接口
1、配置文件pytest.ini中添加:
markers=
smoke:冒烟用例
usermanage:用户管理模块
productmanage:商品管理模块
2、用例装饰器
@pytest.mark.smoke或@pytest.mark.usermanage
3、执行命令
pytest -m “smoke or usermanage”
六、pytest跳过测试用例
1、无条件跳过
@pytest.mark.skip(reason="跳过原因")
2、有条件跳过
@pytest.mark.skipif(arg>10,reason="如果arg大于10,跳过")
七、使用@pytest.fixture()装饰器来实现部分用例的前后置
1 import pytest 2 3 @pytest.fixture(scope='function',params=['aa','bb']) 4 def my_fixture(reqest): 5 print('前置') 6 yield reqest.param 7 print('后置') 8 # return reqest.param 9 10 def test_01(self,my_fixture): 11 print(my_fixture)
八、通过conftest.py和pytest.fixture()结合使用实现全局的前置应用
1、项目全局、模块全局
2、conftest.py文件是单独存放的一个夹具配置文件,经常是不能更改。
3、原则上conftest.py需要和运行的用例放到统一层,并且不需要做任何import导入的操作
4、@pytest.fixtrue()他的作用既可以部分也可以全部前后置
5、conftest.py和pytest.fixture()结合使用,作用全局的前后置
本文来自博客园,作者:别摸我的马甲线,转载请注明原文链接:https://www.cnblogs.com/a-wyw/p/16198763.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!