目录
一、介绍
1. pytest单元测试框架主要做什么?
- 测试发现:从多个文件里找到测试用例
- 测试执行:按照一定顺序和规则执行,并生成结果
- 测试判断:通过断言判断预期结果和实际结果的差异
- 测试报告:统计测试进度,耗时,通过率,生成测试报告
-
作用:
pytest结合allure生成测试报告;
pytest结合Jenkins实现持续集成; -
pytest插件:
pytest-html生成html格式自动化测试报告;
pytest-xdist测试用例分布式执行、多cpu分发;
pytest-ordering改变测试用例执行顺序;
pytest-rerunfailures用例失败后重跑
2. 默认规则
-
模块名必须以test_开头或_test结尾
test_login.py -
测试类必须以test开头,并且不能有init方法
class TestLogin:
-
测试函数必须以test开头
def test_login(self):
3. pytest测试用例的运行方式
-
主函数运行
运行主函数,主函数含
pytest.main()
-
命令行方式运行
在终端中直接执行:
pytest
二、用法
1. pytest.main()
参考:
pytest之main函数的用法
1.1 命令行参数详情
-s: 显示程序中的print/logging输出,不输出环境信息
-v: 丰富信息模式, 输出更详细的用例执行信息
-q: 安静模式, 不输出环境信息
-x: 出现一条测试用例失败就退出测试。利于调试
-k:可以使用and、not、or等逻辑运算符,区分:匹配范围(文件名、类名、函数名)
-
运行
目录及子目录下
所有用例pytest.main()
-
运行
指定模块
所有用例pytest.main(['test_login.py'])
-
运行
指定模块指定类指定用例
,”::”冒号分隔开pytest.main(['test_login.py::class TestLogin::def test_login(self)'])
2. assert 断言
assert后的表达式为真,即为断言通过,用例执行通过。
assert xx 判断xx为真
assert not xx 判断xx不为真
assert a in b 判断b包含a
assert a == b 判断a等于b
assert a != b 判断a不等于b
3. 数据驱动
3.1 @pytest.mark.parametrize()用法
作用:给测试用例,输入测试数据
第一个参数:参数名,字符串,表示用例函数的参数。多个参数,以逗号分开。
第二个参数:参数值,列表,用于保存测试数据。有多组数据,可嵌套元组。
如:
@pytest.mark.parametrize(‘参数名’,list)
@pytest.mark.parametrize(‘参数名1,参数名2’,[(参数1_data[0], 参数2_data[0]),(参数1_data[1], 参数2_data[1])])