Drukowanie czasów wykonania testów i przypinanie powolnych testów za pomocą py.test


122

Przeprowadzam testy jednostkowe na serwerze CI przy użyciu py.test. Testy wykorzystują zasoby zewnętrzne pobierane przez sieć. Czasami program uruchamiający test trwa zbyt długo, co powoduje przerwanie programu uruchamiającego testy. Nie mogę powtórzyć problemów lokalnie.

Czy istnieje sposób, aby py.test wydrukował czasy wykonywania (wolnego) testu, tak aby ustalenie problematycznych testów stało się łatwiejsze?

Odpowiedzi:


175

Nie jestem pewien, czy to rozwiąże Twój problem, ale możesz przejść --durations=Ndo drukowania najwolniejszych Ntestów po zakończeniu zestawu testów.

Służy --durations=0do drukowania wszystkich.


89
Jeśli przekroczysz --durations=0czas wykonania, WSZYSTKIE testy zostaną zgłoszone.
oLas

Czy wiesz, czy istnieje możliwość dodania go do generowanego raportu pokrycia HTML? Podobnie jak dodanie .coveragercpliku z zawartością [run] branch = Truepowoduje dodanie informacji o zasięgu gałęzi?
Martin Thoma

Będziesz musiał sam dodać te informacje, pytest-html obsługuje wstawianie dodatkowych treści.
Bruno Oliveira

4
@oLas: To nieprawda: jeśli testy są „zbyt szybkie”, zmierzony czas może najwyraźniej zmienić się na 0 i nadal zostaną odfiltrowane. Ujemny próg również w tym przypadku nie pomaga. Kolejną przeszkodą związaną z tym podejściem jest to, że pytest zawsze drukuje, (0.00 durations hidden. Use -vv to show these durations.)co nie ma żadnego sensu.
bluenote10

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.