¿Hay alguna manera de suprimir las advertencias internas de depreciación de Pytest?
Contexto: estoy buscando evaluar la dificultad de trasladar un conjunto de pruebas de nose
a pytest
. La suite es bastante grande y utiliza generadores de prueba basados en muchos nose
estilos yield
.
Primero me gustaría asegurarme de que las pruebas existentes pasen con pytest, y luego tal vez cambiar los generadores de prueba a parameterized
.
La ejecución $ pytest path-to-test-folder
de pytest 3.0.4 está completamente dominada 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?
pytest -p no:warnings
, o agregue lo siguiente a su pytest.ini o tox.ini:El resultado será verde sin ninguna indicación de advertencias. Consulte la documentación en https://docs.pytest.org/en/latest/warnings.html#disabling-warnings-summary .
Este puede ser un caso de uso válido para un conjunto de pruebas en el que desea una salida limpia.
Tenga en cuenta que ocultar siempre todas las advertencias puede hacer que se pierda advertencias importantes. Si desea ocultar solo advertencias específicas, mire la respuesta de Cloc .
fuente
addopts = -p no:warnings
es REALMENTE MALA idea, y la solución CloC es mucho más sensata, pero tuve que usar la tuya cuandoignore::InsecureRequestWarning
no fue reconocida, así que obtienes +1 tambiénCreo que no desea ocultar todas las advertencias, sino solo las que no son relevantes. Y en este caso, advertencias de depreciación de los módulos de Python importados.
Habiendo leído la documentación de Pytest sobre la captura de advertencias :
¡Entonces puedes filtrar las advertencias con la
-W
opción de Python !Parece que
pytest
elimina por completo los filtros, porque muestra todos esosDeprecationWarning
cuando se ejecuta, y la documentación de Python sobre los filtros de advertencia predeterminados dice claramente:Entonces, en su caso, si desea filtrar los tipos de advertencia que desea ignorar, como esos
DeprecationWarning
, simplemente ejecute el comando pytest con la-W
opción:EDITAR : A partir del comentario de colini , es posible filtrar por módulo. Ejemplo para ignorar las advertencias de obsolescencia de todos los sqlalchemy:
A continuación, puede enumerar los módulos instalados que crean demasiado ruido en la salida de
pytest
Úselo con un archivo en lugar de en la línea de comando:
Es posible que prefiera enumerar esos filtros en el archivo pytest.ini:
fuente
ignore::DeprecationWarning:sqlalchemy.*:
En el archivo pytest.ini puede agregar:
O pasar debajo de la línea en la línea de comandos. Esto puede resultar útil si sus conjuntos de pruebas manejan las advertencias mediante un sistema externo.
O si solo desea ocultar alguna advertencia específica en desuso, agregue la siguiente declaración en su archivo pytest.ini
Esto ignorará todas las advertencias de tipo DeprecationWarning donde el inicio del mensaje coincide con la expresión regular ". * U. * mode is deprecated".
O Aunque no se recomienda, puede utilizar el
opción de línea de comandos para suprimir el resumen de advertencia por completo de la salida de ejecución de prueba.
fuente
No quiero ocultar todas las advertencias, así que puse esto en
pytest.ini
fuente