Pytest

发布时间 2023-05-31 14:14:42作者: 理塘丁真1!5!

pytest
1.插件
pytest-html 生成html格式的自动化测试报告
pytest --html=report/report.html test_sdk2_1.py
pytest-xdist 测试用例分布式执行,多CPU分发
pytest-ordering 用于改变测试用例的执行顺寻
pytest-rerunfailures 用例失败后重跑
allure-pytest 用于生成美观的测试报告

2.规则和基础应用
1.模块名必须以test_开头或者_test结尾
2.测试类必须以Test开头,并且不能有init方法
3.测试方法必须以test开头

3.pytest测试用例的运行方式
1.主函数模式
1.运行所有:pytest.main()
2.指定模块:pytest.main(['-vs','test_login.py])
3.指定目录:pytest.main(['-vs','/interface_testcase')
4.通过nodeid指定用例运行,noceid由模块名,分隔符,类名,方法名,函数名组成
pytest.main(['-vs','./interface_testcase/test_inteface.py::test_04_func'])
pytest.main(['-vs','./interface_testcase/test_inteface.py::Testinterface::test_04_func'])
2.命令行模式
1.运行所有:pytest
2.指定模块:pytest -vs test_login.py
3.指定目录:pytest -vs ./interface_testcase
4.指定目录:pytest -vs ./interface_testcase/test_inteface.py::test_04_func
3.通过读取pytest.ini配置文件运行
pytest.ini这个文件它是pytest单元测试框架的核心配置文件。
1.位置:一般放在项目的根目录
2.编码,必须是ANSI,可以用notpad++修改编码格式。
3.作用:改变pytest的默认行为
4.运行的规则:不管是主函数模式,还是命令行模式,都会取读取这个配置
[pytest]
addopts=-vs #命令行的参数,用空格分隔
testpaths = /testcase #测试用例的路径
python_files #模块名的规则
python_classes = Test* #类名的规则
python_functions = test #方法名的规则
参数详解:
-s:表示输出调试信息,包括print打印的信息
-v:显示更详细的信息
-vs:这两个参数一起用
-n:支持多线程或者分布式运行
--reruns NUM:失败用例重跑
-x:只要有一个报错,测试用例停止执行
--maxfail=2 出现两个用例失败就停止
-k:根据测试用例的部分字符串指定测试用例 pytest -vs ./testcase -k "ao"

4.pytest测试用例的执行顺序
1.unittest ascii 的大小来绝对的执行顺寻
2.pytest默认顺序是按照从上往下
2.使用装饰器可以指定case的执行顺序
@pytest.mark.run(order=1)
Order 是几就第几个执行

5.如何分组执行
smoke:冒烟用例

6.pytest跳过测试用例
1.无条件跳过
@pytest.mark.skip(reason="")
2.有条件跳过
@pytest.mark.skipif(age>=18,reason="")

7.初始化与结束时
类中
setup_class() 初始化
teardown_class() case结束时执行