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
pytest -p no:warnings
o agregue lo siguiente a su pytest.ini o tox.ini:
[pytest]
addopts = -p no:warnings
El resultado será verde sin ninguna indicación de advertencia (a menos que las pruebas fallen, por supuesto).
Ver https://docs.pytest.org/en/latest/warnings.html#disabling-warnings-summary