¿Cómo decirle a py.test que omita ciertos directorios?


91

Intenté usar la norecursedirsopción dentro de setup.cfg para decirle a py.test que no recopile pruebas de ciertos directorios, pero parece que lo ignora.

[tool:pytest]
norecursedirs=lib/third

¡Cuando corro py.test, veo cómo obtiene pruebas desde adentro lib/third!


Parece que tengo pruebas de ejecución py.testy pytestambos son bestias diferentes. Extraño pero pytestes el que falla porque no carga las exclusiones de [pytest].
sorin

1
pytestes de logilab. Quieres py.test.
ecatmur

3
también intenta hacernosecuredirs=lib/third/*
intelis

¿Hay alguna manera de ignorar algunas carpetas en el propio script con código?
bicepjai

2
Terminé aquí porque tenía curiosidad por saber por qué diablos mi pytest de la aplicación web en el desarrollo local es tan extremadamente lento ... La razón fue un directorio de recursos cargado con una estructura anidada yy / dd / mm ... ¡lo que realmente apesta! afortunadamente [pytest] norecursedirs = resourcesen pytest.inihace un truco 💪!
andilabs

Respuestas:


85

py.test --ignore=somedir trabajó para mi


5
Y --ignorese puede especificar varias veces para ignorar varios directorios
phoenix

Cómo omitir ciertas pruebas en lugar del directorio
Rajat jain

Puede usar la -kopción como muestra otra respuesta a continuación. Consulte "Ejecutar pruebas mediante expresiones de palabras clave" en docs.pytest.org/en/latest/… . Las marcas también pueden ser útiles aquí. Marque sus pruebas como "lentas", etc. y luego use-k "not slow"
shadfc

También se puede utilizar--ignore-glob para ignorar las rutas de los archivos de prueba basados ​​en comodines de estilo shell de Unix. Por ejemplo --ignore-glob=**/sandbox/*, ignorará todos los archivos de cualquier sandboxcarpeta.
Ene M.

28

Si tiene varios directorios con diferentes padres, puede especificar diferentes --ignoreparámetros:

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

  • nueva opción: --ignore evitará que se recopile la ruta especificada.
    Puede especificarse varias veces.

23

Resolví el misterio: si se encuentra una sección de pytest en uno de los posibles archivos de configuración ( pytest.ini, tox.iniysetup.cfg ), pytest no buscará otros, así que asegúrese de definir las opciones de py.test en un solo archivo.

Sugeriría usar setup.cfg.


8
¿Por qué setup.cfg? La documentación actual parece recomendar los otros dos
jebob

Creo que es importante mencionar que si desea utilizar un .iniarchivo, debe especificarlo con pytest -c pytest.ini. por alguna razón, los setup.cfgcontenidos se recogieron automáticamente.
therightstuff

17

Puedes usar

py.test -k 'not third'

que excluye todo el contenido del directorio "tercer".


11

norecursedirsDeberia trabajar. Compruebe si tiene un archivo pytest.ini u otro archivo setup.cfg. ¿Cómo estás invocando py.test?


1
Tengo setup.cfglos [pytest]archivos correctos y no correctos en el interior, pero parece que se ignora y, en cambio, buscará todos los archivos.
sorin

8

En mi caso, el problema fue el comodín que faltaba. Lo siguiente funciona para mí:

[tool:pytest]
norecursedirs = subpath/*

mientras que simplemente norecursedirs = subpathno lo hizo.


Igual que aquí. Sin embargo, comportamiento muy extraño.
azmeuk


0

Para usar pytest.ini(que se recomienda, a menos que esté usando, toxen cuyo caso tox.initendría sentido), llame pytestcon pytest -c pytest.ini.

Con el fin de evitar que mi muestra not_me_1.pyy not_me_2.pyde que se investiga o linted, mis pytest.inies como sigue:

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

[pycodestyle]
ignore = not_me_* ALL

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.