pytest从入门到精通笔记
一、pytest简介
pytest是一个非常成熟的全功能的Python测试框架,比unittest更灵活,容易上手。主要有以下几个特点:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 1. 简单灵活,容易上手 2. 支持参数化 3. 能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium / appnium等自动化测试、接口自动化测试(pytest + requests) 4.pytest 具有很多第三方插件,并且可以自定义扩展,比较好用的如: pytest pytest - selenium(集成selenium) pytest - html(生成html格式的自动化测试报告) pytest - rerunfailures(case失败后重复执行) pytest - xdist(测试用例分步执行、多CPU分发) pytest - ordering(用户改变测试用例的执行顺序) allure - pytest(生成美观的测试报告) … 5. 测试用例的skip和xfail处理 6. 可以很好的和jenkins集成 7.report 框架 - - - - allure 也支持了pytest 说明:插件的安装,可以放到requirements.txt中,通过pip install - r requirements.txt批量安装插件。 |
二、Pytest测试用例命名规范
1 2 3 4 | 1 、模块名(测试用例文件命名)必须以 test_开头或者以_test结尾。 2 、测试类命名应当以Test开头,并且不能有init方法。测试类不应该有构造函数。 3 、测试函数命名,测试类的方法命名应该以test_开头。 4 、测试方法必须以test开头。 |
三、pytest用例的运行方式
1、主函数模式
1 2 3 4 | 1 、运行所有:pytest.main() 2 、指定模块:pytest.main([’ - vs’,'test_login.py]) 3 、指定目录:pytes.main([’ - vs’,’. / interface_testcase’]) 4 、通过nodeid指定用例运行:nodeid由模块名,分割符,类名,方法名,函数名组成 |
1 2 | pytest.main([’ - vs’,’. / interface_testcase / test_interface.py::test_04_func’]) pytest.main([’ - vs’,’. / interface_testcase / test_interface.py::Testinterface::test_04_func’]) |
2、命令行模式
1 2 3 4 | 1 、运行所有:pytest 2 、指定模块:pytest - vs test_login.py 3 、指定目录:pytes - vs . / interface_testcase 4 、通过nodeid指定用例运行:nodeid由模块名,分割符,类名,方法名,函数名组成 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | pytest - vs . / interface_testcase / test_interface.py::test_04_func pytest - vs . / interface_testcase / test_interface.py::Testinterface::test_04_func 参数详解 - s: 表示输出调试信息,包括 print 打印的信息 - v: 显示更详细的信息 - vs:两个参数一起用 - n:支持多线程或分布式运行用例 如:pytest - vs . / testcase / test_login.py - n 2 - return NUM:失败用例重跑,num失败后重跑的次数 - x:表示只要有一个用例报错,那么测试停止 –maxfall = 2 :出现两个用例失败就停止 - k:根据测试用例的步伐字符串指定测试用例 如:pytest - vs . / testcase - k “ao” |
3、通过读取pytest.ini配置文件运行(重要)
pytest.ini这个文件它是pytest单元测试框架的核心配置文件
1 2 3 4 | 1 、位置:一般放在项目的跟目录下 2 、编码:必须是ANSI,可以使用notpad + + 修改编码格式 3 、作用:改变pytest默认的行为 4 、运行规则:不管是主函数的模式运行,命令模式运行,都会去读取这个配置文件 |
1 2 3 4 5 6 | [pytest] addopts = - vs - - html . / report / report.html testpaths = . / testcase python_files = test * .py python_classes = Test * python_functions = test |
四、pytest执行用例的顺序
unittes :ASCII的大小来决定执行的顺序
pytest:默认从上到下
改变默认的执行顺序,使用mark标记
1 | @pytest .mark.run(order = 2 ) |
五、分组执行用例
应用场景: 冒烟测试、分模块执行、分接口和web执行
smoke:冒烟用例,分布在各个模块里面
步骤:
1、自定义标签
1 2 | #自定义 @pytest .mark.smoke |
2、在pytest.ini文件中加入配置项:
1 2 3 4 | markers = smoke:冒烟用例 usermange:用户管理模块 ... |
3、执行用例
1 2 | pytest - m "smoke" pytest - m "smoke or usermanage or product" |
可参考:https://blog.csdn.net/weixin_45349028/article/details/118388768
本文作者:香菜哥哥
本文链接:https://www.cnblogs.com/yizhipanghu/p/17440759.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
2019-05-29 python3+requests接口自动化测试框架
2019-05-29 Centos7 网卡DHCP重新获取IP地址