首页 > 解决方案 > 如何更改 pytest 类中参数化堆叠的顺序?

问题描述

我有一个测试类,它有一个参数化类和其中的一些测试,每个测试都有自己的参数化方法。我希望该类使用一个类参数在其中运行所有测试,并且只有在所有测试完成后,才使用第二个参数再次运行测试。例如:代码是这样的:

@pytest.mark.parametrize("param_a",[1,2])
class TestTest():

    @pytest.mark.parametrize("param_b",[3,4])
    def test_1(self, param):
        pass

    @pytest.mark.parametrize("param_b",[3,4])
    def test_2(self,param):
        pass

现在它使用如下参数:

test_tmp.py::TestTest::test_1[1][3]
test_tmp.py::TestTest::test_1[1][4]
test_tmp.py::TestTest::test_1[2][3]
test_tmp.py::TestTest::test_1[2][4]

test_tmp.py::TestTest::test_2[1][3]
test_tmp.py::TestTest::test_2[1][4]
test_tmp.py::TestTest::test_2[2][3]
test_tmp.py::TestTest::test_2[2][4]

我希望它使用这样的参数:

test_tmp.py::TestTest::test_1[1][3]
test_tmp.py::TestTest::test_1[1][4]
test_tmp.py::TestTest::test_2[1][3]
test_tmp.py::TestTest::test_2[1][4]

test_tmp.py::TestTest::test_1[2][3]
test_tmp.py::TestTest::test_1[2][4]
test_tmp.py::TestTest::test_2[2][3]
test_tmp.py::TestTest::test_2[2][4]

有什么办法可以做到这一点?

标签: pythonpytestparametrized-testing

解决方案


推荐阅读