我正在使用 pytest 进行单元测试,我想对测试进行参数化。我知道我可以在类级别和方法级别使用@pytest.mark.parametrize。
@pytest.mark.parametrize("param1", [1,2,3,4,5])
class TestXYZ:
@pytest.mark.parametrize("param2", [6,7,8,9])
def test_xyz(self, param1, param2):
assert param1 == param2
但是,在我的情况下,param2 列表取决于实际的 param1 值。我想获得这样的东西:
@pytest.mark.parametrize("param1", [1,2,3,4,5])
class TestXYZ:
@pytest.mark.parametrize("param2", getparams(param1))
def test_xyz(self, param1, param2):
assert param1 == param2
但是,我不知道该怎么做。
我尝试使用嵌套函数,但这也没有成功:
@pytest.mark.parametrize("param1", [1,2,3,4,5])
class TestXYZ:
def test_gen(self, param1):
@pytest.mark.parametrize("param2", [6,7,8,9])
def test_xyz(self, param1, param2):
assert param1 == param2
return test_gen
Pytest 然后只为 param1 收集一个测试用例。