【发布时间】:2019-11-11 22:41:05
【问题描述】:
想象一个玩具测试定义:
@pytest.mark.parametrize("bar", [1, 2, 3])
def test_foo(bar):
assert some_result(bar)
我现在希望能够在命令行上提供bar。据我所知,这还没有内置到 Py.Test 中:
pytest --param "bar=7"
并像这样编写我的测试参数定义:
@pytest.mark.parametrize(*from_args_if_available("bar", [1, 2, 3]))
def test_foo(bar):
assert some_result(bar)
我可以实现from_args_if_available() 再次解析所有命令行参数并寻找--params 当然。另一种方法是让request.config 全局可用(这会很丑)。
我想知道是否可以从任何地方访问 request.config 元素,以便将所有命令行选项定义放在一个地方(以及帮助)。
那么有没有另一种方法可以访问我可以按照所述方式使用的已解析命令行选项?
【问题讨论】:
-
您无法使用
mark.parametrize实现它。当尚未解析命令行参数时,它会在测试模块导入时进行评估。你必须添加一个自定义的pytest_generate_testshookimpl;查看Generating parameters combinations, depending on command line 下的配方,应该是您的用例。
标签: python parameters command-line-arguments pytest