pytest插件,运行规则以及参数,pytest.ini配置文件,跳过用例,用例执行规则,夹具
一 pytest详解以及常用的插件安装
1.pytest是python的一个非常成熟的单元测试框架(测试的是程序的最小单元:函数,方法)
2.pytest可以和所有的自动化工具或模块:selenium,requests,appium结合,实现web自动化,接口自动化,app自动化
3.它可以和allure插件生成美观以及定制化的报告,和jenkins实现持续集成
4.它有很多强大的插件
创建一个requirements.txt的文件,写入插件的名称,一次性安装所有。
插件:
pytest(本身) pytest-html(生成简易的html报告) pytest-xdist(多线程执行) pytest-ordering(修改测试用例的执行顺序) pytest-rerunfailures(失败用例重跑) pytest-base-url(管理基础路径:测试环境/开发环境/线上环境) allure-pytest(生成报告)
5.pytest主要用来做什么?
(1)发现测试用例
(2)执行测试用例
(3)判断测试结果
(4)生成测试报告
二 pytest默认的测试用例的规则
1.模块名(py文件)必须以test_开头或者以_test结尾
2.测试类必须以Test开头,并且不能带有ini方法
3. 测试用例必须以test开头
三 pytest用例执行的方式及参数(在命令行执行)
1. 命令行模式运行
命令: pytest
参数:
-vs
-v 输出详细的测试用例的信息
-s 输出用例中的调试信息
示例:pytest -vs
-n 多线程执行
示例:pytest -vs -n 2
--reruns 失败用例重跑
示例:pytest -vs --reruns 2
-x 一旦出现一个用例失败则终止测试
示例:pytest -vs --maxfail 2
-html 生成简易的html报告
示例:pytest -vs --html=./reports/report.html
-k 运行包含有指定字符串的测试用例(测试用例的名称必须很规范)
示例:pytest -vs -k "XXXX"
指定模块运行:pytest -vs ./testcases/test_XXX.py
指定文件夹运行:pytest -vs ./testcases/微信
通过node id的格式运行:pytest -vs ./testcases/weixin/模块名(test_weixin.py)::类名(TestApi)::用例名(test_02_add_flag)
2.主函数模式运行(run.py)
if __name__ == "__main__":
pytest.main(["-vs"])
3.基于pytest.ini配置文件运行
(1)配置文件的名称是固定的,一般放在项目的跟目录下
(2)作用是:可以改变pytest默认的测试用例的规则
(3)不管是命令行的方式,还是主函数的方式都会自动的读取这个配置文件去运行
[pytest]
#命令行参数
addopts = -vs --html=./reports/report.html -m "smoke or user_manage"
#指定测试用例的路径
testpaths = ./testcases/
#指定测试模块的默认规则
python_files = test_*.py
#指定测试类的默认规则
python_class = Test*
#指定测试用例的默认规则
pytest_functions = test_*
markers =
smoke:冒烟用例
user_manage:用户管理用例
注意:
1.一旦有编码错误,那么需要改成gb2312的编码格式或者不写中文注释
2.必须在测试用例上面加上装饰器
四 pytest测试用例的执行顺序
(仅在pycharm中显示顺序提前,allure报告中的位置不变)
默认是从上往下依次执行,改变顺序可以使用插件: pytest -ordering
@pytest.mark.run(order=3)五 pytest跳过测试用例
(1)无条件的跳过
@pytest.mark.skip(reason="这里写跳过的理由")
(2)有条件的跳过
@pytest.mark.skipif(age<5条件语句,reason="少于10年工作经验不考虑录取-跳过的理由")六.pytest测试用例的前后置
setup_class , teardown_class, setup, teardown 存在耦合情况,尽量使用非耦合



