在Pytest中是否可以根据命令行参数使用参数?

时间:2018-06-14 14:53:47

标签: python pytest

我有一些旧的测试可以这样工作:

test1(some_param):
    ...

test2(some_param):
    ...

call_tests(param):
    for test in all_test:
        test(param)

if arg_a:
    call_tests("foo")
if arg_b:
    call_tests("bar")

我想将它们转换为使用Pytest并以正确的方式这样做。我想在conftest.py

中做这样的事情
@pytest.fixture(scope="session",
                params=["foo", "bar"])
def some_param(request):
    return request.param

但我没有找到任何可以从命令行参数控制参数列表的示例。我相信我可以解决这个问题,但我希望Pytest已经有了一些很好的方法。是这样的,还是我应该弄清楚自己的做法?

1 个答案:

答案 0 :(得分:2)

是的,您可以传递命令行参数。 在您的conftest.py中,您可以使用parser.addoption。例如:

def pytest_addoption(parser):
    parser.addoption("--browser", action="store", default="chrome")

def pytest_generate_tests(metafunc):
    option_value = meta.config.option.browser
    if 'browser' in metafunc.fixturenames and option_value is not None:
        metafunc.parametrize("browser", [option_value])

还有更多信息here