pytest 查找测试用例的原则
- 指定命令行参数时的查找原则:如果指定了命令行参数,则根据命令行参数执行。
- 未指定命令行参数时的查找原则:如果未指定命令行参数(即直接在命令行输入 pytest),则从 testpath(已配置)或从当前目录开始查找可用的测试用例, 其步骤如下:
- 搜索由任何符合以下规则的文件 test_*.py 或 *_test.py 文件。
- 找到后,从这些文件中,收集如下测试项:test 为前缀的函数;Test 为前缀的类里面的以 test 为前缀的函数
pytest 运行方式详解及其参数 pytest 有两个测试运行方式,命令行运行和 pytest.main() 运行。
- 命令行运行
python -m pytest [...]
- pytest.main() 运行:pytest 还支持在程序中运行,在程序中运行的命令如下
pytest.main([...])
参数:不管是使用命令行运行或者使用 pytest.main() 的方式运行,它们支持的参数都是一样的。需要注意的是:pytest 的参数必须放在一个 list 或者 tuple 里。
-m: 用表达式指定多个标记名。 pytest 提供了一个装饰器 @pytest.mark.xxx,用于标记测试并分组(xxx是你定义的分组名),以便你快速选中并运行,各个分组直接用 and、or 来分割。
-v: 运行时输出更详细的用例执行信息 不使用 -v 参数,运行时不会显示运行的具体测试用例名称;使用 -v 参数,会在 console 里打印出具体哪条测试用例被运行。
-q: 类似 unittest 里的 verbosity,用来简化运行输出信息。 使用 -q 运行测试用例,仅仅显示很简单的运行信息, 例如:
-k: 可以通过表达式运行指定的测试用例。 它是一种模糊匹配,用 and 或 or 区分各个关键字,匹配范围有文件名、类名、函数名。
-x: 出现一条测试用例失败就退出测试。 在调试时,这个功能非常有用。当出现测试失败时,停止运行后续的测试。
如:
pytest.main(["-v"])
|