2016-07-29 24 views
1

ich py.test Programm schreibe, die folgende py.test Befestigung Code BerücksichtigungPytest Finalizer - Reihenfolge der Ausführung

@pytest.fixture(scope="class") 
def my_fixture(request): 
    def fin1(): 
     print("fin1") 
request.addfinalizer(fin1) 
    def fin2(): 
     print("fin2") 
request.addfinalizer(fin2) 

Was die Ausführungsreihenfolge? Ich habe keine Hinweise auf die Dokumentation bezüglich der Ausführungsreihenfolge der Finalisierer gefunden.

Vielen Dank im Voraus.

Antwort

0

Ich denke, der einfachste Weg wäre, versuchen Sie einfach Ihren Code mit -s laufen und sehen, in welcher Reihenfolge die Drucke passieren.

Was würde ich empfehlen, ist stattdessen Ausbeute Befestigungen zu verwenden, so können Sie explizit die Teardown Reihenfolge leicht steuern:

@pytest.yield_fixture(scope="class") 
def my_fixture(): 
    # do setup 
    yield 
    fin1() 
    fin2() 

mit Start pytest 3.0 (die in Kürze veröffentlicht wird), wird dies auch funktionieren, indem nur mit yield mit dem normalen @pytest.fixture Dekorateur, und wird die empfohlene Art und Weise zu Teardown sein.