Impression des temps d'exécution des tests et fixation des tests lents avec py.test

121

J'exécute des tests unitaires sur un serveur CI en utilisant py.test. Les tests utilisent des ressources externes récupérées sur le réseau. Parfois, le test runner prend trop de temps, ce qui entraîne son abandon. Je ne peux pas répéter les problèmes localement.

Existe-t-il un moyen de faire en sorte que py.test imprime les temps d'exécution des tests (lents), afin de déterminer plus facilement les tests problématiques?

Mikko Ohtamaa
la source

Réponses:

175

Je ne suis pas sûr que cela résoudra votre problème, mais vous pouvez réussir --durations=Nà imprimer les Ntests les plus lents une fois la suite de tests terminée.

Utilisez --durations=0pour tout imprimer.

Bruno Oliveira
la source
89
Si vous passez le --durations=0temps d'exécution pour TOUS les tests seront signalés.
oLas
Savez-vous s'il est possible de l'ajouter au rapport de couverture HTML généré? Similaire à l'ajout d'un .coveragercfichier avec le contenu [run] branch = Trueajoute des informations de couverture de branchement?
Martin Thoma
Vous devrez ajouter ces informations vous-même, pytest-html prend en charge l'insertion de contenus supplémentaires.
Bruno Oliveira
4
@oLas: Ce n'est pas vrai: si les tests sont "trop ​​rapides", le temps mesuré peut apparemment devenir 0 et ils seront toujours filtrés. Un seuil négatif n'aide pas non plus dans ce cas. Un autre inconvénient de cette approche est que pytest s'imprimera toujours, (0.00 durations hidden. Use -vv to show these durations.)ce qui n'a aucun sens.
bluenote10
18

Vous pouvez transmettre le numéro avec --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

Prenez référence à: https://medium.com/@brianokken/pytest-durations-0-show-all-times-for-tests-and-setup-and-teardown-848dccac85db

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

Phuong
la source