Python unittest pytest
主要作用:
发现测试用例:从多个py文件看一定规则找到测试用例
执行测试用例:按照一定顺序执行测试用例,并生成结果
pytest 默认从上到下 执行 可以通过装饰器改变顺序
unittest 默认ascii顺序执行
判断测试结果:断言
生成测试报告:pytest-html allure
pytest
基于Python的单元测试框架 可以和selenium requests appium 结合自动化测试
可以实现用例跳过 skip 和失败用例重测 reruns
可以通过allure-pytest 生成allure 报告
方便和Jenkins实现持续集成
有很多强大的插件
pytest-html 生成html报告
pytest-xdist 多线程执行测试用例
pytest-ordering 改变测试用例执行顺序
pytest-rerunfailures 失败用例重跑
allure-pytest 生成allure报告
一次性安装需要的插件
项目根目录新建requirement.txt
文件内容
pytest
pytest-html
pytest-xdist
pytest-ordering
pytest-rerunfailures
allure-pytest
执行文件
pip install -r requirement.txt
查看安装
#查看所有
pip list
#查看pytest
pip show pytest
pytest测试用例规则:
模块名必须已test_开头或者_test结尾
测试类必须以Test开头切不能带init方法
测试用例必须以test_开头
命名规范:
模块名一般以全小写多个英文用_隔开
类名一般首字母大写
方法名一般全小写多个英文用_隔开
运行方式:
主函数
import pytest
if __name__ == '__main__':
pytest.main()
常见参数:
-v 输出更加详细的信息
-s 输出调试信息
可以合并成vs
–reruns=数字 失败重跑次数
-x 失败一次就停止测试
–maxfail=N 失败N次就停止
–html=保存文件地址
-n=N 多线程
-k 执行包含指定关键字的测试用例(可以是模块名、测试类名、方法名)
#-k 可以是模块名、测试类名、方法名
pytest.main(['-v','-s','-k','03 or 01'])
通过node id 执行用例
指定模块执行
import pytest
if __name__ == '__main__':
pytest.main(['-v','-s','testcases/test_demo2.py'])
执行指定文件夹
import pytest
if __name__ == '__main__':
pytest.main([<