2017-06-28 8 views
0

Ich schreibe Testfälle in der folgenden Art und Weise.pytest Ausführungsreihenfolge der Tests in einer Klasse

# content of test_class.py 
class TestClass(object): 
    def test_one(self): 
     x = "this" 
     assert 'h' in x 

    def test_two(self): 
     x = "hello" 
     assert hasattr(x, 'check') 

test_two auf test_one abhängt, so Reihenfolge der Ausführung ist wichtig, Was ist die Konvention Testausführung bestellen, wenn Sie Gruppentests in einer Klasse zu erzwingen?

+0

Haben Sie versucht, https://pypi.python.org/pypi/pytest-ordering/? –

+0

In diesem Fall würde die Ausführung in alphabetischer Reihenfolge erfolgen. Der einfachste Weg ist, Ihre Testnamen entsprechend zu bestellen. –

Antwort

0

Standardmäßig werden die Tests in der Reihenfolge ausgeführt, in der sie in der Klasse/dem Modul definiert sind. In Ihrem Fall:

test_class.py::TestClass::test_one PASSED 
test_class.py::TestClass::test_two PASSED 

dass Betrachten im Allgemeinen ist es eine schlechte Praxis Schreiben von Tests ist, die voneinander abhängig sind. Wenn spätere Tests parallel ausgeführt werden, haben Sie flakiness, oder wenn Sie ein Plugin für die zufällige Testausführung installieren, z. https://pypi.python.org/pypi/pytest-randomly, oder wenn Sie das Projekt verlassen und jemand anderes muss Tests debuggen, die aus heiterem Himmel beginnen würde.

Ich würde empfehlen, zwei Tests zu einem zu kombinieren. Alles, was zählt, ist ein Test-Szenario. Ist es wichtig, wenn Sie 2 Tests oder 1 haben, wenn Sie immer noch dasselbe Vertrauen in Ihren Code haben?

0

Sie können den Haken pytest_collection_modifyitems verwenden, um die Reihenfolge wie gewünscht zu ändern.

Verwandte Themen