我有一些旧的测试可以这样工作:
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已经有了一些很好的方法。是这样的,还是我应该弄清楚自己的做法?
答案 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