pytest
默认规则
- 模块名以test_开头或者_test结尾
- 测试类以Test开头,并且不能有init方法
- 测试用例以test开头
pytest相关插件
pytest-html 生成html测试报告
pytest-xdist 测试用例多线程执行
pytest-ordering 改变用例执行顺序
pytest-rerunfailures 用例失败重跑
allure-pytest 生成测试报告
1.运行方式
1.1 主函数运行方式
#运行所有
pytest.main()
#指定模块运行
pytest.main(['test_login.py'])
#指定目录运行
pytest.main(["./testcase"])
1.2 命令行方式运行
#运行所有
pytest
#指定模块运行
pytest test_login.py
#指定目录运行
pytest ./testcase
1.3 命令行及主函数运行参数详解
-s
: 表示输出调试信息-v
: 显示更详细的信息-n
: 支持多线程运行用例,-x
:只要一个用例报错,测试就会停止-k
: 根据测试用例的字符串模糊匹配用例执行-maxfail={n}
: 用例失败n次,测试停止-reruns={n}
: 用例失败重跑
#命令行方式:
pytest -vs ./testcase --reruns 2
#主函数方式:
pytest.main(["-vs", "./testcase", "--reruns=2"])
1.4 pytest.ini运行配置文件
- 一般放在项目的根目录
- 文件编码必须是ANSI编码
- 主函数或者命令行方式运行,都会去读取这个配置文件,按配置文件的规则执行用例
addopts
: 运行时添加的参数如 -v -s
testpaths
: 运行测试用例的路径
python_files
: 匹配测试模块名的规则
python_classes
: 匹配测试类的规则
python_functions
: 匹配方法名的规则
配置文件:
[pytest]
addopts=-vs
testpaths=./testcase
python_files=test*
python_classes=Test*
python_functions=test*
1.5 给用例打上标签,指定运行标签关联的用例
使用装饰器给修饰在用例上,表示给此用例打上标签,如:
@pytest.mark.read
@pytest.mark.后的命名可自定义
代码:
@pytest.mark.read
def test_login2(self):
print("/npytest测试用例执行。。。。。")
配置文件需要添加以下参数:
markers =
read: 只读用例
执行用例:
pytest -m "read"
如果多个标签只需要加上or关键字连接即可,如:
pytest -m "read or write"
2.执行顺序
默认是按用例从上至下的方式执行
可用装饰器在用例上修饰:
@pytest.mark.run 装饰器参数order 表示用例的优先级
如果存在多个用例,只有部分用例使用装饰器,那么优先执行带有装饰器的用例,其他没有使用装饰器的用例按默认顺序执行;
@pytest.mark.run(order=1)
def test_login2(self):
print("/npytest测试用例执行。。。。。")
原创文章,作者:jamestackk,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/269479.html