Pytest:定义测试收集的自定义路径

时间:2019-05-01 08:58:39

标签: python python-3.x pytest

我正在构建一个带有自定义固定装置pytest.ini和conftest的测试运行程序包。 我希望该运行程序能够接受目录路径作为参数, 并在该路径中收集测试,然后使用我的自定义配置文件运行它们。

我现在正在做的就是将给定目录复制到程序包中的已知位置(测试),然后以编程方式运行pytest并带有测试路径和--rootdir参数。

Dir tree:
- runner
---- tests
---- conftest.py
---- pytest.ini
---- fixtures.py
---- runner.py

Python code:
pytest_params = ['tests', '--rootdir=runner', <other params passed to pytest>]
pytest.main([pytest_params])

哪个效果很好。 但是我不想每次运行都复制整个测试目录。

我试图在pytest.ini中设置testpaths arg并从pytest参数中远程访问path参数,但这会导致pytest丢失rootdir和pytest.ini文件,当然会失败。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您需要显式指定ini文件的位置。您可以使用-c参数指定ini文件的位置。要从运行程序目录加载设置,您需要使用pytest运行conftest.py

您的论点看起来像这样:

pytest_params = ['conftest.py', '-c=pytest.ini', '--rootdir=<path_of_external_tests', <other params passed to pytest>]
pytest.main(pytest_params)