Drucken von Testausführungszeiten und Festhalten langsamer Tests mit py.test

116

Ich führe Unit-Tests auf einem CI-Server mit py.test durch. Tests verwenden externe Ressourcen, die über das Netzwerk abgerufen werden. Manchmal dauert der Testläufer zu lange, wodurch der Testläufer abgebrochen wird. Ich kann die Probleme nicht lokal wiederholen.

Gibt es eine Möglichkeit, die Ausführungszeiten von (langsamen) Tests mit py.test auszudrucken, damit problematische Tests einfacher festgelegt werden können?

Mikko Ohtamaa
quelle

Antworten:

169

Ich bin nicht sicher, ob dies Ihr Problem lösen wird, aber Sie können --durations=Ndie langsamsten NTests nach Abschluss der Testsuite drucken .

Verwenden Sie --durations=0diese Option , um alle zu drucken.

Bruno Oliveira
quelle
88
Wenn Sie die --durations=0Ausführungszeit für ALLE Tests überschreiten , wird dies gemeldet.
oLas
Wissen Sie, ob es eine Möglichkeit gibt, es dem generierten HTML-Bericht hinzuzufügen? Ähnlich wie beim Hinzufügen einer .coveragercDatei mit dem Inhalt werden [run] branch = TrueInformationen zur Verzweigungsabdeckung hinzugefügt ?
Martin Thoma
Sie müssen diese Informationen selbst hinzufügen. Pytest-html unterstützt das Einfügen zusätzlicher Inhalte.
Bruno Oliveira
4
@oLas: Das stimmt nicht: Wenn Tests "zu schnell" sind, kann die gemessene Zeit anscheinend 0 werden und sie werden trotzdem herausgefiltert. Eine negative Schwelle hilft auch in diesem Fall nicht. Ein weiteres Ärgernis bei diesem Ansatz ist, dass der Pytest immer gedruckt wird, (0.00 durations hidden. Use -vv to show these durations.)was keinen Sinn ergibt.
bluenote10
17

Sie können die Nummer mit übergeben --durations

pytest --durations=0 — Show all times for tests and setup and teardown

pytest --durations=1 — Just show me the slowest

pytest --durations=50 — Slowest 50, with times,  etc

Weitere Informationen finden Sie unter: https://medium.com/@brianokken/pytest-durations-0-show-all-times-for-tests-and-setup-and-teardown-848dccac85db

Oder: https://docs.pytest.org/en/latest/usage.html#profiling-test-execution-duration

Phuong
quelle