gpt4 book ai didi

python - 在测试类中参数化测试时保持测试执行的顺序

转载 作者:行者123 更新时间:2023-12-04 16:46:02 26 4
gpt4 key购买 nike

我正在尝试参数化我的测试,如下所示

@pytest.mark.parametrize("a,b", test_data)
class TestClass():
def test_A(self,a,b):
# Some Code ..
pass
def test_B(self,a,b):
# Some Code ..
pass
def test_C(self,a,b):
# Some Code ..
pass

我希望我的测试像测试步骤一样按顺序执行,例如
test_A
test_B
test_C
test_A
test_B
test_C
....

它们被执行的顺序是
test_A
test_A
...
test_B
test_B
...
test_C
test_C

我尝试过的另一种选择是将我的测试放入 for 循环中,如下所示
for data in test_data:
a,b = data
def test_A(a,b):
# Some Code ..
pass
def test_B(a,b):
# Some Code ..
pass
def test_C(a,b):
# Some Code ..
pass

这给了我所需的顺序,但测试名称在所有迭代中保持不变,因此它会在报告中产生问题。

最佳答案

我终于能够使用 pytest_generate_tests 钩子(Hook)实现这一点。

def pytest_generate_tests(metafunc):
argvalues = []
for data in metafunc.cls.data:
items = data.items()
argnames = [x[0] for x in items]
argvalues.append(([x[1] for x in items]))
metafunc.parametrize(argnames, argvalues, scope="class"

class TestClass:
data = [{'attr_1': 'val_1_1', 'attr_2': 'val_1_2'}, {'attr_1': 'val_2_1', 'attr_2': 'val_2_2'}]

def test_A(self, attr_1, attr_2)
...

def test_B(self, attr_1, attr_2)
...

def test_B(self, attr_1, attr_2)
...

https://pytest.org/latest/example/parametrize.html

关于python - 在测试类中参数化测试时保持测试执行的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31957216/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com