一.pytest 介绍
pytest:基于 unittest 之上的单元测试框架
1.自动发现测试模块和测试方法
2.断言使用 assert +表达式即可
3.可以设置会话级\模块级\类级\函数级fixtures 数据准备+清理工作
4.有丰富的插件库,目前在 600 个以上
安装命令
pip install pytest
安装 HTML 报告的插件
pip install pytest-html
pytest 插件地址
http://plugincompat.herokuapp.com
pytest 收集测试用例的规则
1.默认从当前目录中搜集测试用例,即在哪个目录下运行 pytest 命令,则中哪个目录中搜索
2.搜索规则
2.1 符合命令规则 test_*.py 或者 *_test.py 的文件
2.2 以 test_ 开头的函数名
2.3 以 Test 开头的测试类(没有__init__函数)当中,以 test_ 开头的函数
pytest - Mark
使用 mark 功能,给测试用例打开标签
在运行测试用例的时候,可根据标签名来过滤要运行的用例
打标签方法:
在测试用例/测试类前面加上:@pytest.mark.标记名
示例:
@pytest.mark.smoke
可以在一个用例上打多个标签.多次使用@pytest.mark.标签名 即可
示例:
import unittest
import pytest
class TestDemo(unittest.TestCase):
@pytest.mark.smoke
@pytest.mark.demo
def test_first(self):
print('first test case')
在 Terminal 执行命令:pytest -m smoke
pytest - 命令行参数
pytest 通过命令行参数的形式来运行测试\设置过滤条件\生成测试报告
安好 pytest 后,可在命令行中运行 pytest --help 查看多有可用参数
注意:pytest 名录在哪个目录下执行,那么就会以此目录作为根目录,按照规则自动去搜索用例
1.执行当前目录下所有用例
pytest
2.只执行带指定标签(mark标记)的用例
pytest -m 标签名1[and 标签名2]
示例:pytest -m smoke and demo 表示执行同时有smoke和demo两个标签的用例
pytest - 参数化
在测试用例的前面加上:
@pytest.mark.parametrize("参数名",列表数据)
参数名:用来接收每一项数据,并作为测试用例的参数
列表数据:一组测试数据