本文介绍了一些pytest命令的退出码、调用的选项和参数、在python中调用pytest等。此外,本文省略了pytest命令行集成到CI的介绍。
通过python -m pytest
调用pytest
可以在cmd中使用python解释器来运行pytest测试:
1 |
|
这个方式等同于直接使用pytest [...]
运行pytest测试。但是,通过python
调用的话,会添加当前路径到sys.path
中。
pytest退出码
运行pytest
的退出码有以下6种:
- Exit code 0:所有检测到的测试用例测试通过
- Exit code 1:检测到测试用例,但是有部分测试不通过
- Exit code 2:pytest测试被用户中断
- Exit code 3:执行测试用例时,发生了内部错误
- Exit code 4:pytest命令行使用有错误
- Exit code 5:没有检测到测试用例
如果想要自定义Exit code,可以考虑使用
pytest-custom_exit_code
插件.
获取有关版本,选项名称,环境变量的帮助
1 |
|
在第1(或n)个测试用例失败后停止测试
可以通过下面的命令指定pytest在第1(或n)个测试用例失败后停止测试:
1 |
|
指定测试用例集
pytest支持多种指定测试用例集运行测试的方法:
- 运行一个module中的测试用例
1 |
|
- 运行一个目录下的测试用例
1 |
|
- 通过keywords表达式匹配
1 |
|
- 通过指定唯一id运行
每个被检测到的测试用例,都会有一个唯一id。id以module文件名开头,后面加上指定的类名/函数名,并且通过::
分割。
例如,运行module中指定的测试用例:
1 |
|
例如,运行module中的指定类中的指定测试用例:
1 |
|
- 通过mark表达式匹配
1 |
|
执行上面的命令,pytest只会运行使用了@pytest.mark.slow
装饰器的测试用例。可以进一步了解pytest.mark
。
详细的总结报告
pytest的-r
参数可以用来在测试session的最后,展示简短的测试总结报告。当运行大量测试用例的时候,-r
命令很有用。
-r命令后面一般会指定一些字符,比如-ra
表示展示所有不通过的测试用例。-r后面可以指定的字符如下:
- f 失败的
- E 错误的
- s 跳过的
- x 希望失败,实际失败的
- X 希望失败,实际成功的
- p 通过的
- P 通过且有输出的
- a 除了pP的
- A 所有的
可以同时指定多个字符。(有点类似rpm的-q命令)
在python代码中调用pytest
通过pytest.main()
就可以通过python代码直接调用pytest。就像从命令行调用pytest一样。它不会引发SystemExit,而是返回exitcode。
通过给main()
传入list,就可以指定选项和参数。例如:pytest.main(["-x", "mytestdir"])
等同于pytest -x mytestdir
。