py.test:错误:无法识别的参数

Hel*_*lad 13 python pytest

我有一个项目目录如下所示

Projects/
....this_project/
........this_project/
............__init__.py
............code.py
............tests/
................conftest.py
................test_1.py
................test_2.py
Run Code Online (Sandbox Code Playgroud)

我通过将以下代码放入conftest.py添加了命令行选项(--PALLADIUM_CONFIG)

def pytest_addoption(parser):
    parser.addoption("--PALLADIUM_CONFIG", action="store")

@pytest.fixture
def PALLADIUM_CONFIG(request):
    return request.config.getoption("--PALLADIUM_CONFIG")
Run Code Online (Sandbox Code Playgroud)

而奇怪的是:

如果我进入

Projects/this_project/this_project
Run Code Online (Sandbox Code Playgroud)

要么

Projects/this_project/this_project/tests
Run Code Online (Sandbox Code Playgroud)

并运行

py.test --PALLADIUM_CONFIG=***
Run Code Online (Sandbox Code Playgroud)

如果运行良好

但是如果我找到自己的话

Projects/this_project
Run Code Online (Sandbox Code Playgroud)

要么

Projects
Run Code Online (Sandbox Code Playgroud)

然后pytest给我错误

py.test: error: unrecognized arguments: --PALLADIUM_CONFIG=***
Run Code Online (Sandbox Code Playgroud)

Bru*_*ira 12

这是pytest本身的限制.看看文档:

请注意,pytest在工具启动时没有在更深的嵌套子目录中找到conftest.py文件.将conftest.py文件保存在顶级测试或项目根目录中通常是个好主意.

一种解决方案是创建外部插件,或将选项移动到conftest更靠近根的文件.