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.

29
demandé sur Max V 2013-05-07 15:11:51

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 .

10
répondu scanny 2013-10-30 06:31:23

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.

5
répondu thisismyrobot 2014-04-27 01:36:54

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.

2
répondu rocky 2017-05-23 11:54:26

Avec xdist vous pouvez paralléliser py.les séries de tests. Il permet même d'envoyer des tests à des machines distantes. Dépend de votre installation, il peut accélérer un peu :)

1
répondu neutrinus 2015-02-09 20:35:14

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.

0
répondu Sean 2017-07-26 20:13:28