pytest标记相互依赖的参数化



我使用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收集一个测试用例。

这应该适用于您:

import pytest
parameter1 = [1, 2, 3]
@pytest.mark.parametrize("param1", parameter1)
class TestXYZ:
@pytest.mark.parametrize("param2", [4, 3, parameter1[0]])
def test_xyz(self, param1, param2):
assert param1 == param2

输出:本例为7 failed, 2 passed

相关内容

  • 没有找到相关文章

最新更新