[英]How to group/order parameterised tests in a pytest class
我有这个测试类:
@pytest.mark.parametrize(["arg"], [["one"], ["two"]])
class TestFoo:
def test_a(self, arg):
print("a", arg)
def test_b(self, arg):
print("b", arg)
我得到这个输出:
a one
a two
b one
b two
我该怎么做才能得到这个输出?
a one
b one
a two
b two
我希望首先执行第一个参数的所有测试,然后才执行第二个参数的所有测试。
结果证明我需要场景支持:
def pytest_generate_tests(metafunc):
idlist = []
argvalues = []
if hasattr(metafunc.cls, "scenarios"):
for scenario in metafunc.cls.scenarios:
idlist.append(scenario[0])
items = scenario[1].items()
argnames = [x[0] for x in items]
argvalues.append([x[1] for x in items])
metafunc.parametrize(argnames, argvalues, ids=idlist, scope="class")
scenario1 = ("scenario1": {"arg": "one"})
scenario2 = ("scenario2": {"arg": "one"})
class TestFoo:
scenarios = [scenario1, scenario2]
def test_a(self, arg):
print("a", arg)
def test_b(self, arg):
print("b", arg)
然后输出就是我所期望的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.