2017-10-04 4 views
2

Ich versuche pytest Parametrisierung mit pytest_generate_tests():pytest Parametrisierung Ausführungsreihenfolge für mehrere Tests

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 

In Bei dieser Konfiguration wird jeder Test mit allen Parametern und erst nach Abschluss ausgeführt der nächste Test mit seinen Startparametern. Ich möchte das Testen so konfigurieren, dass alle Tests zyklisch mit ihrem ersten Parameter, dann mit dem zweiten Parameter usw. ausgeführt werden.

Zum Beispiel eine hat die folgende Ausgabe:

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] 

Ich möchte die nächsten haben:

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] 

Antwort

0

Sory für Ausgabe Vervielfältigung. Gefunden Antwort in 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 
Verwandte Themen