pytest知识梳理
pytest:基于unittest之上的单元测试框架
- 1、自动发现测试模块的测试方法
- 2、断言使用assert + 表达式即可
- 3、可以设置会话级、模块及、类级、函数级的fixtures,用来做数据准备+清理工作
- 4、丰富的插件库,例如allure
安装命令:
pip install pytest
安装html报告插件
pip install pytest-html
pytest插件地址:https://docs.pytest.org/en/latest/reference/plugin_list.html
一、pytest收集测试用例的规则
1、默认从当前目录中搜集测试用例,即在哪个目录下运行pytest命令,则从哪个目录当中搜索;
2、搜索规则:
- 符合命名规则test_*.py或者*_test.py的文件
- 以Test开头的测试类(没有__init__函数)当中,以test_开头的函数
- 以test_开头的函数名
二、pytest -mark
对测试用例打标签,在运行测试用例的时候,可根据标签名来过滤要运行的用例
使用方法:
在测试用例/测试类前面加上:@pytest.mark.标签名
三、pytest中fixture的使用
fixture定义
表示此函数为测试环境数据的准备和清理
在一个fixture内部如何区分环境准备、环境清理呢?
可以在函数内部使用yield关键字
yield关键字以后的代码,就是环境清理的代码,即在测试用例执行完成之后会执行的代码
示例
@pytest.fixture() def test1(): print('\n开始执行function') yield print('\n结束执行function')
fixture使用
在测试类或者测试函数前面添加@pytest.mark.usefixture(’test1‘)
@pytest.mark.usefixtures('test1') class TestCase: def test_b(self): print('---用例b执行---') def test_c(self): print('---用例c执行---')
四、pytest中数据驱动参数化
在测试用例的前面加上@pytest.mark.parametrize('参数名',列表数据)
参数名:用来接收每一项数据,并作为测试的参数
列表数据:一组参数化测试数据
五、pytest失败重运行机制
插件名称:rerunfaukures
安装方法:pip install pytest-rerunfailures
使用方式:命令行参数形式
命令:pytest --reruns 重试次数
比如:pytest --reruns 2 表示运行失败的用例可以重新运行2次
命令:pytest --reruns 重试次数 --reruns-delay 次数之间的延时设置(单位秒)
pytest --reruns 2 --reruns-delay 5
失败的用例重新运行2次,时间间隔为5秒
六 、pytest-html测试报告
安装pytest-html插件
pytest可以生成多种样式的结果
1、生成JunitXML格式的测试报告,命令: --junitxml=path
2、生成result log格式的测试报告,命令:--resultlog=report\log.txt
3、生成html测试报告,命令:--html=report\report.html
七、生成pytest-allure报告
注意:pytest使用命令行执行命令的时候,如果需要打印print信息,需要添加-s参数