Ich verwende Pytest. Ich habe zwei Dateien in einem Verzeichnis. In einer der Dateien gibt es einen lange laufenden Testfall, der eine Ausgabe erzeugt. In der anderen Datei befindet sich ein Testfall, der diese Ausgabe liest. Wie kann ich die ordnungsgemäße Ausführung der beiden Testfälle sicherstellen? Gibt es eine andere Alternative als die Testfälle in derselben Datei in der richtigen Reihenfolge zu platzieren?Testfall Ausführungsreihenfolge in Pytest
Antwort
Im Allgemeinen können Sie das Verhalten von grundsätzlich jedem Teil von pytest unter Verwendung seiner well-specified hooks konfigurieren.
In Ihrem Fall möchten Sie den "pytest_collection_modifyitems" Hook, mit dem Sie die gesammelten Tests neu anordnen können.
Das sagte, es scheint, als ob die Bestellung Ihrer Tests einfacher sein sollte - das ist schließlich Python! Also habe ich ein Plugin geschrieben, um Tests zu bestellen. Überprüfen Sie die docs oder installieren Sie es von pypi. Im Moment empfehle ich die Verwendung von @ pytest.mark.first und @ pytest.mark.second oder einer der @ pytest.mark.order # -Marker, aber ich habe einige Ideen über nützlichere APIs. Vorschläge willkommen :)
Hey. Danke, dass du dieses Plugin erstellt hast. Können Sie es so ändern, dass es nur nachfolgende Ziffern als Reihenfolge extrahiert. ZB wenn ich @ pytest.mark.custom1 sage, dann sollte 1 die Bestellung sein. Dies würde sehr helfen! –
Ich kann es versuchen. Ich denke, v0.2 hat dieses Verhalten mit einem "Order" -Marker anstelle von beliebigen Markern. Könnten Sie dies als Feature-Anfrage auf der github-Seite von pytest-ordering aufschreiben? https://github.com/ftobia/pytest-order –
Die Hooks Link sollte gehen zu: http://pytest.org/latest/writing_plugins.html#well-specified-hooks –
Vielleicht können Sie dependency pytest Plugin prüfen, mit, in dem Sie die Test Abhängigkeiten leicht einstellen:
@pytest.mark.dependency()
def test_long():
pass
@pytest.mark.dependency(depends=['test_long'])
def test_short():
pass
Auf diese Weise test_short
wird nur ausgeführt, wenn test_long
Erfolg ist und Kraft der Ausführungssequenz auch.
Oben funktioniert nicht für die Reihenfolge Sequenzierung. Zum Beispiel: wenn Sie die Bestellung umdrehen. Ich bin schon lange auf kurze angewiesen. In diesem Fall wird long übersprungen. – peaxol
Es gibt auch ein Plugin pytest-ordering, das Ihren Anforderungen entspricht.
Frank T.'s Antwort erwähnt bereits dieses Plugin und wurde 3 Jahre vor dieser Antwort gepostet. – Ave
uh, aber er hat den Namen nicht erwähnt. deshalb habe ich diesen Punkt wahrscheinlich völlig verfehlt. –
- 1. Pytest Finalizer - Reihenfolge der Ausführung
- 2. Ausführungsreihenfolge
- 3. django-pytest: AssertionError
- 4. ASP.Net Ausführungsreihenfolge
- 5. Vorlaufzeit künstlich in pytest
- 6. Ausführungsreihenfolge von Funktionen in AngularJS
- 7. Richtlinie Ausführungsreihenfolge in Winkeln 2
- 8. Testfall Fehler in Sonar
- 9. Stored Procedure - Zwingen Ausführungsreihenfolge
- 10. MySQL Abfrage/Klausel Ausführungsreihenfolge
- 11. Sencha Touch 2 - Ausführungsreihenfolge
- 12. Ausführungsreihenfolge der Winkelmessertests
- 13. Schienen: Modell-Ausführungsreihenfolge
- 14. F # Code Ausführungsreihenfolge
- 15. dispatch_async vs dispatch_sync Ausführungsreihenfolge
- 16. OANDA Ausführungsreihenfolge REST API
- 17. Maven Plugin Ausführungsreihenfolge
- 18. Haskell IO Ausführungsreihenfolge
- 19. Ausführungsreihenfolge für den ApiController
- 20. AttributError bei der Verwendung von request.function in pytest Yield Fixture
- 21. Ausführungsreihenfolge der ActionScript-Ereignishandler
- 22. Wie behaupten, in Valueerror pytest
- 23. NodeJS, Async forEachSeries Ausführungsreihenfolge
- 24. JavaScript-Anweisung Ausführungsreihenfolge
- 25. JavaScript-Funktion Ausführungsreihenfolge
- 26. Veränderte Ausführungsreihenfolge jQuery.live mit()
- 27. Ausführungsreihenfolge von ExceptionMapper
- 28. jQuery/JavaScript Ausführungsreihenfolge
- 29. PHP, HTML, Javascript Ausführungsreihenfolge
- 30. Unittest Vs pytest
Im Allgemeinen ist es keine gute Idee, Testfälle voneinander abhängig zu machen. Wenn Sie dieselben Daten in 2 Testfällen verwenden müssen, warum fügen Sie sie nicht dem Abschnitt "setup" hinzu? – Brad
Ich weiß. Ich mag es auch nicht, aber im Moment brauche ich es. – Kocka
Ich möchte es nicht zum Setup-Abschnitt hinzufügen, weil es etwa 15-20 Minuten dauert. – Kocka