Stampa dei tempi di esecuzione dei test e blocco dei test lenti con py.test


118

Sto eseguendo unit test su un server CI utilizzando py.test. I test utilizzano risorse esterne recuperate dalla rete. A volte il test runner impiega troppo tempo, causando l'interruzione del test runner. Non posso ripetere i problemi a livello locale.

C'è un modo per fare in modo che py.test stampi i tempi di esecuzione del test (lento), in modo da rendere più facile definire i test problematici?

Risposte:


172

Non sono sicuro che questo risolverà il tuo problema, ma puoi passare --durations=Nalla stampa dei Ntest più lenti al termine della suite di test.

Utilizzare --durations=0per stampare tutto.


88
Se passi il --durations=0tempo di esecuzione per TUTTI i test verranno segnalati
oLas

Sai se c'è la possibilità di aggiungerlo al report di copertura HTML generato? Simile come l'aggiunta di .coveragercfile con il contenuto [run] branch = Trueaggiunge informazioni sulla copertura ramificata?
Martin Thoma

Dovrai aggiungere tu stesso queste informazioni, pytest-html ha il supporto per inserire contenuti aggiuntivi.
Bruno Oliveira

4
@oLas: Non è vero: se i test sono "troppo veloci", il tempo misurato può apparentemente diventare 0 e verranno comunque filtrati. Anche una soglia negativa non aiuta in questo caso. Un altro fastidio con questo approccio è che pytest stamperà sempre il (0.00 durations hidden. Use -vv to show these durations.)che non ha alcun senso.
bluenote10

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.