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

时间:2020-01-31 18:16:44

标签: python python-3.x pytest

我有以下

conftest.py

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

my_test.py

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


def test_mtest(sopt):
    //pytest code

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

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

conftest.pymy_test.py,它不起作用,并因以下错误而失败:

ERROR: usage: __main__.py [options] [file_or_dir] [file_or_dir] [...]
__main__.py: error: unrecognized arguments: --sopt=aaaaa

我不喜欢只有2行代码的单独文件。

是否可以将parser.addoption中的conftest.py放入my_test.py中并使其正常工作?

1 个答案:

答案 0 :(得分:2)

不。引用pytest_addoption挂钩文档:

注意:

由于pytest discovers plugins during startup的方式,此功能只能在位于测试根目录的插件或conftest.py文件中实现。