几个测试的pytest参数化执行顺序

时间:2017-10-04 16:10:54

标签: python python-2.7 python-3.x pytest

我正在尝试用pytest_generate_tests()进行pytest参数化:

conftest.py

def pytest_generate_tests(metafunc):
    if 'cliautoconfigargs' in metafunc.fixturenames:
        metafunc.parametrize(
            'cliautoconfigargs', list(<some list of params>))
        )

test_cliautoconfig.py

def test_check_conf_mode(cliautoconfigargs):
    assert True
def test_enable_disable_command(cliautoconfigargs):
    assert True

在这样的配置中,每个测试都运行其所有参数,并且只有在完成下一个测试并且其参数开始后才会运行。我想以这种方式配置测试,当所有测试都应该使用第一个参数循环运行,然后使用第二个参数,依此类推。

例如,a具有以下输出:

test_cliautoconfig.py::test_check_conf_mode[cliautoconfigargs0]
test_cliautoconfig.py::test_check_conf_mode[cliautoconfigargs1]
test_cliautoconfig.py::test_enable_disable_command[cliautoconfigargs0] 
test_cliautoconfig.py::test_enable_disable_command[cliautoconfigargs1]

我想要下一个:

test_cliautoconfig.py::test_check_conf_mode[cliautoconfigargs0]
test_cliautoconfig.py::test_enable_disable_command[cliautoconfigargs0] 
test_cliautoconfig.py::test_check_conf_mode[cliautoconfigargs1]
test_cliautoconfig.py::test_enable_disable_command[cliautoconfigargs1]

1 个答案:

答案 0 :(得分:0)

Sory for issuedublication。 在maintaining order of test execution when parametrizing tests in test class

中找到答案

conftest.py

def pytest_generate_tests(metafunc):
    if 'cliautoconfigargs' in metafunc.fixturenames:
        metafunc.parametrize(
            'cliautoconfigargs', list(<some list of params>), scope="class"
        )

test_cliautoconfig.py

class TestCommand:
    def test_check_conf_mode(self, cliautoconfigargs):
        assert True
    def test_enable_disable_command(self, cliautoconfigargs):
        assert True