繁体   English   中英

如何在 pytest 类中对参数化测试进行分组/排序

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM