Comment dire à py.test de sauter certains répertoires?


91

J'ai essayé d'utiliser l' norecursedirsoption dans setup.cfg pour dire à py.test de ne pas collecter de tests à partir de certains répertoires mais il semble qu'il l'ignore.

[tool:pytest]
norecursedirs=lib/third

Quand je cours, py.testje vois comment il obtient des tests de l'intérieur lib/third!


Il semble que j'ai py.testet les pytestdeux exécutent des tests et sont des bêtes différentes. Étrange mais pytestest celui qui échoue car il ne charge pas les exclusions à partir de [pytest].
sorin le

1
pytestest de logilab. Tu veux py.test.
ecatmur

3
essayez aussi de fairenosecuredirs=lib/third/*
intelis

existe-t-il un moyen d'ignorer certains dossiers dans le script lui-même avec du code?
bicepjai

2
s'est retrouvé ici parce que j'étais curieux de savoir pourquoi mon pytest d'applications Web dans le développement local est si extrêmement lent ... La raison était un répertoire de ressources téléchargé avec une structure imbriquée yy / jj / mm .... ce qui est vraiment nul! Heureusement , [pytest] norecursedirs = resourcesen pytest.inifait un tour de 💪!
andilabs

Réponses:


85

py.test --ignore=somedir travaillé pour moi


5
Et --ignorepeut être spécifié plusieurs fois pour ignorer plusieurs répertoires
phoenix

Comment sauter certains tests au lieu du répertoire
Rajat jain

Vous pouvez utiliser l' -koption comme le montre une autre réponse ci-dessous. Voir «Exécuter des tests par expressions de mots-clés» sur docs.pytest.org/en/latest/… . Les marques peuvent également être utiles ici. Marquez vos tests comme "lents", etc., puis utilisez-k "not slow"
shadfc

Il est également possible d'utiliser--ignore-glob pour ignorer les chemins de fichiers de test basés sur des caractères génériques de style shell Unix. Par exemple --ignore-glob=**/sandbox/*, ignorera tous les fichiers dans n'importe quel sandboxdossier.
Jan M.

28

Si vous avez plusieurs répertoires avec des parents différents, vous pouvez spécifier différents --ignoreparamètres:

py.test --ignore=somedir --ignore=otherdir --ignore=etcdir

  • nouvelle option: --ignore empêchera le chemin spécifié de la collection.
    Peut être spécifié plusieurs fois.

23

J'ai résolu le mystère: si une section pytest est trouvée dans l'un des fichiers de configuration possibles ( pytest.ini, tox.iniet setup.cfg), pytest n'en recherchera pas d'autres, alors assurez-vous de définir les options py.test dans un seul fichier.

Je suggérerais d'utiliser setup.cfg.


8
Pourquoi setup.cfg? La documentation actuelle semble recommander les deux autres
jebob le

Je pense qu'il est important de mentionner que si vous souhaitez utiliser un .inifichier, vous devez le spécifier avec pytest -c pytest.ini. pour une raison quelconque, le setup.cfgcontenu a été récupéré automatiquement.
therightstuff

17

Vous pouvez utiliser

py.test -k 'not third'

qui exclut tout le contenu du «troisième» répertoire.


11

norecursedirsdevrait marcher. Vérifiez si vous disposez d'un pytest.ini ou d'autres fichiers setup.cfg. Comment invoquez-vous py.test?


1
J'ai setup.cfgavec le bon [pytest]et le norecorsedirs à l'intérieur, mais il semble être ignoré, et à la place, il recherchera tous les fichiers.
sorin

8

Dans mon cas, le problème était le caractère générique manquant. Ce qui suit fonctionne pour moi:

[tool:pytest]
norecursedirs = subpath/*

alors que norecursedirs = subpathnon.


Pareil ici. Comportement très étrange cependant.
azmeuk le


0

Pour utiliser pytest.ini(ce qui est recommandé, à moins que vous n'utilisiez toxdans quel cas cela tox.iniaurait du sens), appelez pytestavec pytest -c pytest.ini.

Afin d'empêcher mon échantillon not_me_1.pyet not_me_2.pyd'être testé ou pelucheux, mon pytest.iniest comme suit:

[pytest]
addopts = --ignore-glob=not_me_*

[pycodestyle]
ignore = not_me_* ALL

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.