unittest tutorial setup raises fail conftest python pytest

python - setup - pytest tutorial



Cómo suprimir las advertencias de desaprobación interna de py.test (4)

Creo que no desea ocultar todas las advertencias, sino solo las que no son relevantes. Y en este caso, advertencias de deprectación de módulos importados de Python.

Lectura de la documentación de pytest sobre Warnings Capture :

Tanto la opción de línea de comandos -W como la opción ini de advertencias de filtro se basan en la propia opción -W de Python y warnings.simplefilter , por lo tanto, consulte esas secciones en la documentación de Python para ver otros ejemplos y usos avanzados.

¡Para que pueda filtrar las advertencias con la opción -W de Python!

Parece que pytest elimina completamente los filtros, porque muestra todos esos DeprecationWarning cuando se ejecuta, y la documentación de Python sobre los filtros de advertencia predeterminados dice claramente:

En las versiones de lanzamiento normales, el filtro de advertencia predeterminado tiene las siguientes entradas (en orden de precedencia):

default::DeprecationWarning:__main__ ignore::DeprecationWarning ignore::PendingDeprecationWarning ignore::ImportWarning ignore::ResourceWarning

Entonces, en su caso, si quiere dejar que digamos para filtrar los tipos de advertencia que desea ignorar, como los DeprecationWarning , simplemente ejecute el comando pytest con la opción -W :

$ pytest path-to-test-folder -W ignore::DeprecationWarning

EDITAR : Del comentario de colini , es posible filtrar por módulo. Ejemplo para ignorar las advertencias de desaprobación de todas las sqlalchemy:

ignore::DeprecationWarning:sqlalchemy.*:

Luego, puede enumerar los módulos instalados que generan demasiado ruido en la salida de pytest

Usar con archivo en lugar de en la línea de comando:

Puede preferir enumerar esos filtros en el archivo pytest.ini:

[pytest] filterwarnings = ignore::DeprecationWarning

¿Hay alguna manera de suprimir las advertencias de desaprobación interna del pytest?

Contexto: estoy tratando de evaluar la dificultad de portar un conjunto de pruebas de nose a pytest . El conjunto es bastante grande y utiliza en gran medida generadores de prueba basados ​​en el yield nose .

Primero me gustaría asegurarme de que las pruebas existentes pasan con pytest, y luego tal vez cambiar los generadores de prueba a parameterized .

Simplemente ejecutar $ pytest path-to-test-folder con pytest 3.0.4 está completamente dominado por páginas y páginas de

WC1 ~repos/numpy/numpy/lib/tests/test_twodim_base.py yield tests are deprecated, and scheduled to be removed in pytest 4.0

¿Hay alguna forma de desactivar estas advertencias?


De pytest --help :

--disable-pytest-warnings disable warnings summary, overrides -r w flag


No quiero ocultar todas las advertencias, así que puse esto en pytest.ini

[pytest] filterwarnings = ignore::DeprecationWarning