pytest总结
pytest 好处
- 灵活的筛选用例
- 有没有手工加载用例,运行用例? 不需要手工添加,手动运行。 pytest.main()
testsuite, test_loader, test_runner,
- 自动发现测试用例
- pytest 是和 unittest 兼容。
pytest发现用例规则
- (模块名称是以 test_ 或者 _test.py)
- 测试类 不能有 __init__(self)
- 方法名称必须以 test_
- pytest 测试用例函数可以脱离类的形式,可以直接用函数的形式, 类可以不继承unittest.TestCase
- 自动发现用例
通过mark标签 运行指定用例
标记功能的步骤
- 先注册, 在pytest.ini 文件
- 打标签: 测试用例函数上面加 @pytest.mark.标签名
- 运行指定标签用例: pytest -m "标签名"
pytest执行顺序
从上至下
数据驱动
1、paramatrize()传入的值为list【argvalues1,argvalues2,...】
2、第一个参数argnames的值需要被装饰的韩式传入的名字一致。
@pytest.mark.paramatrize("test_info", data): def test_demo(test_info): print(test_info)
## 数据驱动注意事项
- 在使用pytest.mark.paramatrize 做数据驱动的时候,
pytest 和 unittest 不兼容。
如果你想使用 pytest 的数据驱动,就不要继承 unittest.TestCase
如果你想使用 unittest写用例, 就要用 unittest 的数据驱动
测试夹具
- 普通函数
- @pytest.fixture() 声明这是一个测试夹具
- 把 return 改成 yield 实现前置和后置
- yield 前就是前置
- yield 后的就是后置
- 后置清理语句放在 yield 之后
相当于 unittest里面的 setupclass teardownclass
一般在项目下新建conftest.py作为整个项目的前置和后制