我正在构建一个带有自定义固定装置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文件,当然会失败。
有什么想法吗?
答案 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)