## pytest用例管理框架(单元测试框架)基础知识
python :unittest、pytest java :testng 、junit
2pytest 主要作用,
1,发现用例,从多个py文件里面按照一定的规则找到测试用例
2,执行测试,按照一定的规则执行测试用例,并生成结果。
2.1,用例执行顺序从上到下,可以通过装饰器改变规则。unittest默认安装按照ASCLL顺序执行。
3,断言测试结果
4,生成测试报告,pytest-html
pytest简介
1,基于python的单元测试框架,可以和selenium、request、appium结合实现自动化测试。单元测试,就是对软件最小单元,函数,方法进行测试
2,实现用例执行中,可以跳过、skip、和reruns重跑
3、结合allure-pytest插件生成测试报告
4、很方便和Jenkins实现持续集成
5、有很多强大的插件
pytest
pytest-html生成html测试报告
pytest -xdist 多线程支撑测试用例
pytest-ordering 改变测试用例的执行顺序
pytest-rerunfailures 失败用例重跑
allure-pytest 生成测试报告
6,安装上面五个插件,放到一个.txt的文件,pip install -r txt文件地址同时安装五个插件。
pytest的最基本的测试用例的规则
1.模块名必须以test_开头或者_test结尾。
2.测试类必须以Test开头,并且不能带有init方法。
3.测试用例必须以test_开头。
命令规范:
模块名:一般全小写:多个英文之间用_隔开。
类名:类名一般是首字母大写
方法名:一般全小写:多个英文之间用_隔开。
运行方式
1.主函数方式。
1 import pytest
if name == ‘main’:
pytest.main()
常见参数:
-v:输出更加详细的信息。比如文件和用例名称等。
-s:输出调试信息。打印信息等。
可以合并成:-vs
–reruns=1数字:失败重跑 1次
-x:出现1个失败就停止测试。
–maxfail=2 出现N个失败就终止测试。
–html=report.html 生成html的测试报告
-n 多线程运行
-k:运行测试用例名称中包含指定字符串的用例。
pytest.main([‘-vs’,‘-k’,‘weiwei or baili’])
pytest.main([‘-vs’,‘-k’,‘weiwei and baili’])
.指定模块运行。
if name == ‘main’:
pytest.main([‘‐vs’,‘testcases/test_api2.py’])
指定文件夹
if name == ‘main’:
pytest.main([‘‐vs’,‘testcases/’])
通过node id的方式运行测试用例。
if name == ‘main’:
pytest.main([‘‐vs’,‘testcases/test_api.py::TestApi::test_product’])
2.命令行方式。
1 pytest
3.通过pytest.ini的配置文件运行。(不管是命令行还是主函数都会读取这个配置文件)
[pytest]
用于标记这个文件是pytest的配置文件
addopts = -vs 命令行参数,多个参数之间用空格分隔。
testpaths testpaths = testcases/ 配置搜索测试用例的范围
python_files = test_*.py 改变默认的文件搜索规则
python_classes = Test* 改变类默认的类搜索规则
python_functions = test_* 改变函数默认的测试用例的搜索规则。
执行用力标记的用例,用例分组 markers = ceshi:备注
@pytest.mark.ceshi
addopts=[-vs ,-m ceshi] 单个标记
addopts=[-vs, -m ‘mark or ceshi’ ] 多个标记同时执行
执行的时候通过-m参数指定标记
用例执行顺序
pytest默认的执行测试用例的顺序 从上到下。
改变默认用例的执行顺序:在用例上加标记: @pytest.mark.run(order=1)
注意:有order装饰器的优先,相同的从上到下,然后再是没有装饰器的,负数不起作用。
测试用例跳过
@pytest.mark.skip()跳过执行
@pytest.mark.skipif(i=2,reason=‘描述’) 有条件跳过执行
用例的前后置,固件,夹具,钩子函数,
def setup_class(self):
print(‘每个类之前执行’)
def teardown_class(self):
print(‘类结束后执行一次’)