一、需要安装的插件
Pytest
Pytest-html (生成html格式的自动化测试报告)
Pytest-xdist (测试用例分布执行。多CPU分布)
Pytest-ordering (用于改变测试用例的执行顺序)
Pytest-rerunfailures(用例失败后重跑)
Allure-pytest(用于生成美观的测试报告)
可以新建文件requirements.txt中,讲以上需要的插件通过pip install -r requirements.txt
验证是否安装成功:pytest-version
二、使用pytest,默认的测试用例使用规则
- 模块名必须以test_开头或者_test结尾
- 测试类必须以Test开头,并且不能有init方法。
- 测试方法必须以test开头
三、使用pytest测试用例的运行方式
1.主函数模式
(1)运行所有:pytest.main(['-vs'])
(2)指定模块:pytest.main(['-vs','test_shouye.py'])
(3)指定目录:pytest.main(['-vs','./test_case'])
(4)通过nodeid指定用例运行:nodeid由模块名,分隔符、类名、方法名、函数名组成。
如:pytest.main(['-vs','./test_case/test_case1.py::test_04_func']) 目录+方法名
pytest.main(['-vs','./test_case/test_case1.py::TestLogin::test_01_baili']) 目录+类名+函数名
(5)失败用例重跑:pytest.main(['-vs','./test_case/test_case1.py','--reruns=2'])
2.命令行模式:
(1)运行所有:pytest
(2)指定模块:pytest -vs test_shouye.py
(3)指定目录:pytest -vs ./test_case
(4)指定目录:pytest -vs ./test_case/test_case1.py::test_04_func 目录+方法名
pytest -vs ./test_case/test_case1.py::TestLogin::test_01_baili 目录+类名+函数名
(5)失败用例重跑:pytest -vs ./test_case/test_case1.py --reruns=2
(6)根据测试用例的部分字符指定测试用例:pytest -vs ./test_case/test_case1.py -k"ao"
参数详解:
-s:表示输出调试信息,包括print打印的信息
-v:显示更详细的信息
-vs:这两个参数可以一起用
-n:支持多线程或者分布式运行测试用例
如:pytest -vs ./test_case -n 2
--reruns num(重跑次数):失败用例重跑
-x:表示只要有一个用例报错,那么测试停止
-k:根据测试用例的部分字符串指定测试用例。
如:pytest -vs ./test_case/test_case1.py -k"ao"
pytest.ini配置文件中:addopts=-vs --html./report/report.html
--html:生成HTML的测试报告
如:pytest --html ./report/report.html
3.通过读取pytest.ini配置文件运行
pytest.ini这个文件:它是pytest单元测试框架的核心配置文件
(1)位置:一般放在项目的根目录
(2)编码:必须是ANSI,可以使用notpad++修改编码格式。
(3)作用:改变pytest默认的行为。
(4)运行的规则:不管是主函数的模式运行,命令行默认运行,都会去读取这个配置文件。
(通过读取全局的配置文件pytest.ini运行)
[pytest]
addopts = -vs #命令行的参数,用空格分隔
testpaths = ./testcase #测试用例的路径
python_files = test_*.py #模块名的规则
python_classes = Test* #类名的规则
python_functions = test_* #方法名的规则
markers =
smoke:冒烟测试
usermanage:用户管理模块
productmange:商品管理模块
四、pytest执行测试用例的顺序是怎么样的呢?
unittest:ascll的大小决定的执行顺序
pytest:默认从上到下
改变默认的执行顺序:使用 mark 标记
@pytest.mark.run(order=1)
五:如何分组执行(冒烟,分模块执行、分接口和web执行)
smoke:冒烟用例,分布在各个模块里面
如:pytest -m smoke
pytest -m smoke or usermanage or productmange
六、pytest跳过测试用例
1.无条件跳过
@pytest.mark.skip(reason="微微太漂亮")
2.有条件跳过
age =18
@pytest.mark.skipif(age>=18,reason='已成年')
七、强大的功能
1.setup/teardown 所有前置
2.conftest.py结合fixture 实现部分前置
八、allure报告生成
九、报告的定制
html css javascript
。