Comment faire pour accélérer la py.test
Est-il un moyen d'accélérer l'exécution répétée de py.test
? Il semble passer beaucoup de temps à collecter des tests, même si je spécifie quels fichiers Exécuter sur la ligne de commande. Je sais que ce n'est pas un problème de vitesse de disque non plus depuis l'exécution de pyflakes à travers tous les .PY files est très rapide.
5 réponses
utilisant l'option norecursedirs
dans pytest.ini ou tox.ini peut sauver beaucoup de temps de collecte, en fonction des autres fichiers que vous avez dans votre répertoire de travail. Mon temps de collecte est à peu près divisé par deux pour une suite de 300 tests lorsque je l'ai en place (0,34 s contre 0,64 s).
si vous utilisez déjà tox comme je le suis, vous avez juste besoin d'ajouter ce qui suit dans votre tox.ini:
[pytest]
norecursedirs = docs *.egg-info .git appdir .tox
vous pouvez également l'ajouter dans un libre-debout pytest.fichier ini.
La pytest documentation a plus de détails sur py.test des fichiers de configuration .
j'avais le même problème où j'appelais py.test
à la racine de mon projet et mes tests étaient trois sous-répertoires vers le bas. La collecte prenait 6-7 secondes avant 0,4 seconde d'exécution du test.
ma solution initiale était d'appeler py.test
avec la trajectoire relative aux tests:
py.test src/www/tests/
si faire cela accélère votre collection aussi, vous pouvez ajouter le chemin relatif aux tests à la fin de la addopts
paramètre dans votre pytest.ini
- eg:
[pytest]
addopts = --doctest-glob='test_*.md' -x src/www/tests/
cela a fait tomber le temps de collecte + exécution à environ une seconde et je pouvais encore appeler py.test
comme je l'étais avant.
dans le cas particulier où vous exécutez sous Python de cygwin, sa gestion de fichiers unix-style est lente. Voir pytest.py tester démarrage très lent à cygwin pour savoir comment accélérer les choses dans cette situation particulière.
si vous avez un logiciel antivirus en marche, essayez de l'éteindre. J'ai eu exactement ce même problème. La collecte des tests a été incroyablement lente. Il s'est avéré être mon logiciel antivirus (Avast) qui causait le problème. Quand j'ai désactivé le logiciel antivirus, la collecte de test s'est déroulée environ cinq fois plus vite. Je l'ai testé plusieurs fois, en activant et en désactivant l'antivirus, donc je n'ai aucun doute que c'était la cause dans mon cas.