前言
笔者平常运行pytest
用例时,通常使用命令行方式,像这样
pytest -v pxl/test_dir/test_demo.py::TestDemo::test_my_var
,执行某一条case,但每次命令行敲也挺麻烦的。那如何在python
代码中调用pytest
呢?带着疑问一起看。
解答疑问
在main()
函数中调用pytest.main()
就可以啦。
我们深入探讨一下 pytest.main
的用法和一些常见的应用场景。
什么是pytest.main
?
pytest.main
是 Pytest 框架中一个非常实用的函数,它用于从命令行运行测试集或者以编程方式运行测试。通过调用 pytest.main()
函数,我们可以在代码中启动测试过程,并获取测试结果或者进行进一步的操作。
如何使用 pytest.main 运行测试用例?
我们看一个简单示例:
test_demo.py
import pytest
def test_add():
assert 1 + 1 == 2
if __name__ == "__main__":
pytest.main([__file__])
在这个示例中,我们定义了一个简单的测试用例 test_add
,用于检查加法运算的正确性。然后,我们通过 pytest.main([__file__])
来执行当前文件中的测试用例。
要运行这个测试用例,只需在命令行中执行以下命令:
python test_demo.py
Pytest
将会自动发现并执行 test_add
测试用例,并生成测试结果报告。
源码定义
def main(
args: Optional[Union[List[str], "os.PathLike[str]"]] = None,
plugins: Optional[Sequence[Union[str, _PluggyPlugin]]] = None,
) -> Union[int, ExitCode]:
"""Perform an in-process test run.
:param args: List of command line arguments.
:param plugins: List of plugin objects to be auto-registered during initialization.
:returns: An exit code.
"""
可以看到有两个参数,args
传一个list
对象,list
里面是多个命令行的参数;plugins
传一个list
对象,list
里面是初始化的时候需注册的插件