我有一个夹具,可以在测试期间创建项目列表。我想要另一个夹具,它使用第一个夹具生成的值进行参数化。
示例代码
import random
import pytest
@pytest.fixture
def values():
return [random.randint(0, 100) for _ in range(10)]
@pytest.fixture
def value(request):
return request.param
@pytest.mark.parametrize("value", params=values):
def test_function(value):
assert value > 0
Run Code Online (Sandbox Code Playgroud)
上面代码的问题在于它values
是一个函数而不是一个列表。我做了很多挖掘,但没有找到任何方法来解压夹具来参数化另一个夹具。
我知道我可以通过values
夹具并在测试中对其进行迭代,但这不是一个好的解决方案,因为我想查看哪些值导致测试失败。
我也对替代解决方案持开放态度,例如,如果可以从开始的测试运行子测试。