如何将 parser.addoption 放在测试模块中,而不是放在 conftest.py 中?

Som*_*ame 4 python pytest python-3.x

我有以下内容

conftest.py:

def pytest_addoption(parser):
    parser.addoption('--sopt', action='store', default=None, help='Source Data Storage')
Run Code Online (Sandbox Code Playgroud)

my_test.py:

@pytest.fixture(scope='module', autouse=True)
def sopt(pytestconfig):
    return pytestconfig.getoption('sopt')


def test_mtest(sopt):
    //pytest code
Run Code Online (Sandbox Code Playgroud)

运行此测试时它工作正常python3 -m pytest --sopt=aaaaa,但移动时

def pytest_addoption(parser):
    parser.addoption('--sopt', action='store', default=None, help='Source Data Storage')
Run Code Online (Sandbox Code Playgroud)

fromconftest.pymy_test.py它不起作用并失败并出现以下错误:

ERROR: usage: __main__.py [options] [file_or_dir] [file_or_dir] [...]
__main__.py: error: unrecognized arguments: --sopt=aaaaa
Run Code Online (Sandbox Code Playgroud)

我不喜欢只包含两行代码的单独文件。

有没有办法将parser.addoptionfromconftest.py放入my_test.py并使其工作?

hoe*_*ing 5

否。参考pytest_addoption钩子文档:

笔记:

conftest.py由于 pytest在启动期间如何发现插件,此功能应该仅在位于测试根目录的插件或文件中实现。