如何在pytest配置中指定多个选项[pytest_addoption]

And*_*rea 7 python pytest

出于好奇,是否可以在pytest的命令行中添加多个选项?我看到conftest.py有一个pytest_addoption,但我想知道如何添加多个选项.如果有人有建议......我四处寻找,但无法找到如何做到这一点......谢谢!

Fra*_*k T 9

您可以使用pytest_addoption钩子指定任意多个命令行选项.

根据pytest钩子文档:

参数:parser - 要添加命令行选项,请调用parser.addoption(...).要添加ini文件值,请调用parser.addini(...).

所述pytest_addoption钩穿过的parser对象.您可以根据需要多次调用添加任意数量的命令行选项parser.addoption(...).

所以添加两个参数的示例很简单:

def pytest_addoption(parser):
    parser.addoption('--foo', action='store_true', help='Do foo')
    parser.addoption('--bar', action='store_false', help='Do not do bar')
Run Code Online (Sandbox Code Playgroud)

和任何其他py.test钩子一样,这需要进入conftest.py文件.

  • 以下是文档:http://doc.pytest.org/en/latest/writing_plugins.html#_pytest.config.Parser.addoption它说args的行为类似于argparse模块:https://docs.python.org/ 2 /库/ argparse.html (2认同)

har*_*sai 6

您可以通过这种方式添加选项,如下所示:

def pytest_addoption(parser):
    print('conftest method')
    parser.addoption("--hostip", action = "store", default = "127.0.0.1", help ="host ip address")
    parser.addoption("--port", action="store", default="5000", help="port")

@pytest.fixture
def get_param(request):
    config_param = {}
    config_param["host"] = request.config.getoption("--hostip")
    config_param["port"] = request.config.getoption("--port")
    return config_param
Run Code Online (Sandbox Code Playgroud)