一. pytest 单元测试框架
(1)什么是单元测试框架:
针对软件最小单位(函数,方法)进行正确性的检查测试
(2)单元测试框架
Java:junit 和testNG
python:unittest 和pytest
二, pytest 简介
1,pytest 有很多非常强大的插件,并且这些插件能实现很多的实用的操作
pytest
pytest-html (生成html格式的自动化测试报告)
pytest-xdist 测试用例分布式执行,多cpu分发
pytest-ordering 用于改变测试用例的执行顺序
pytest-rerunfailures 用例失败后重跑
allure-pytest 生成美好的report
安装过程:将上述放在 requirements.txt 中,通过pip install -r requirements.txt
三 使用pytest,默认的测试用例的规则以及基础应用
1,模块名必须以test_***.py开始或_test.py 结尾
2,测试类必须以Test 开头,不能有init方法
3,测试方法必须以test 开头
四. pytest 测试用例的运行方式
1,主函数模式
1,pytest.main() 运行全部
2,pytest.main([’-s’]) 表示输出调试信息,包括print 打印信息
3,指定模块:
pytest.main([‘test_login.py’,’-s’])
4,指定目录:pytest.main(’-vs’,’./interface_testcase’)
5, 通过nodeid 指定用例运行,nodeid 由模块名,分隔符,类名,方法名,函数名组成
pytest.main([’-vs’,./interface_testcase/test_interface.py::testInterfcase::test_03])
2,命令行模式
1)运行所有:pytest
2)指定模块:pytest -vs test_login.py
3) 指定目录:pytest -vs./interface_testcase
4) 执行指定的方法:pytest -vs./test_interface.py::testInterfcase::test_03
参数:
-s: 表示输出调试信息,包括print的打印信息
-v : 显示更详细的信息
-vs: 这两个参数一起用。
-n : 支持多线程,分布式
如:pytest -vs ./testcase -n 2
–reruns num: 支持失败用例重跑
-x: 表示有一个用例失败,就会停止
–maxfail 2 出现两个失败用例就会失败
-k: 根据测试用例的部分字符串指定测试用例
如:pytest -vs ./testcase -k "ao’
–html ./目录
3,通过读取pytest.ini 配置文件运行
pytest.ini 这个文件是pytest 单元测试框架的核心配置文件
1,位置:一般放在项目的根目录
2,编码:必须是ANSI, 可以使用notpad++修改编码格式
3,作用:改变pytest 默认的行为
4,运行的规则,不管是主函数的模式运行,还是命令模式运行,都会读取这个配置文件
pytest.ini 内容:
addopts=-vs #命令行的参数,用空格分割
testpaths=./testcase #测试用例的路径
python_file=test_..py #模块名的规则
python_classes=Test #类名的 规则
python_functions=test #方法名的规则
markers=
smoke:冒烟用例
usernamge: 用户管理模块
productmanage: 商品模块
五、pytest 执行测试用例的顺序
unittest:ascII 的大小来绝对的执行的顺序
pytest:默认是从上到下
改变默认执行顺序:
@pytest.mark.run(order=2)
六 ,如何分组执行(冒烟,分模块执行,分接口和web执行)
smoke: 冒烟用例,分布在各个模块里面
pytest -vs -m “smoke”
pytest -vs-m “snoke or usermange”
七,pytest 跳过测试用例
1)无条件跳过
@pytest.mark.skip(reason=‘kkkk’)
2)有条件跳过
@pytest.mark.skip(age>=18,reason =‘已成年’)