对应的视频教程:
https://www.bilibili.com/video/BV1py4y1t7bJ?p=4
https://www.bilibili.com/video/BV1py4y1t7bJ?p=5

默认规则

  1. 模块名必须以test_开头或者_test结尾
  2. 测试类必须以Test开头,并且不能有init方法
  3. 测试方法必须以test开头

运行方式

  1. 主函数模式
  2. 命令行模式
  3. 通过读取pytest.ini配置文件运行

主函数模式

  • 运行所有
import pytest


class Test_login:

    def test_C001001(self):
        print('\ncaseC001001')
        assert 1 == 1


if __name__ == "__main__":
    pytest.main()

注:
pytest.main()默认会执行目录下所有的测试用例,即使测试类在别的模块中,也会被执行

  • 指定路径执行
pytest.main('-vs', '路径')
  • 根据nodeid执行
pytest.main('-vs', '模块路径::类名::方法名')

命令行模式

  • 执行所有

在根目录执行

pytest
  • 指定路径执行
pytest -vs 路径
  • 根据nodeid执行
pytest -vs 模块路径::类名::方法名 

配置文件

pytest.ini是pytest单元测试框架的核心配置文件

  1. 位置:一般放在项目的根目录
  2. 编码:必须是ANSI
  3. 作用:改变pytest默认的行为
  4. 机制:不管是主函数模式、命令行模式,都会读取这个文件

pytest.ini:

[pytest]
addopts = -vs
testpaths = ./testcase
python_files = test_*.py
python_classes = Test*
python_functions = test
markers =
  smoke: 冒烟用例
  usermanage: 用户管理模块

可用参数

参数说明
-s表示输出调试信息,包括print的内容
-v输出详细信息
-n 线程数支持多线程或者分布式运行测试用例
--reruns=重跑次数设置失败后重跑
-x只要有一个失败,测试停止
--maxfail n失败次数达到n时,停止测试
-k根据测试用例的部分字符串指定测试用例

执行顺序

pytest默认是从上到下执行,指定顺序需要pytest-ordering
## 用装饰器指定用例第n个执行
@pytest.mark.run(order=n)