python py.test

python - control de registro de py.test



(4)

Recientemente hemos cambiado a py.test para pruebas de python (lo cual es fantástico por cierto). Sin embargo, estoy intentando averiguar cómo controlar la salida del registro (es decir, el módulo de registro Python incorporado). Tenemos instalado pytest-capturelog y esto funciona como se esperaba y cuando queremos ver los registros podemos pasar la opción --nologcapture.

Sin embargo, ¿cómo controla el nivel de registro (por ejemplo, información, depuración, etc.) y también filtra el registro (si solo está interesado en un módulo específico)? ¿Existen complementos para py.test para lograr esto o necesitamos rodar los nuestros?

Gracias jonny


Como Holger dijo que puedes usar pytest-capturelog :

def test_foo(caplog): caplog.setLevel(logging.INFO) pass

Si no desea usar pytest-capturelog, puede usar un stdout StreamHandler en su configuración de registro para que pytest capture la salida del registro. Aquí hay un ejemplo de basicConfig

logging.basicConfig(level=logging.DEBUG, stream=sys.stdout)


La instalación y el uso del complemento pytest-capturelog podrían satisfacer la mayoría de sus necesidades de pytest / logging. Si falta algo, debería poder implementarlo con relativa facilidad.


Un poco de una contribución posterior: puedes probar pytest-logger . La novedad de este complemento es el registro en el sistema de archivos: pytest proporciona nodeid para cada elemento de prueba, que se puede usar para organizar el directorio de registros de sesión de prueba (con la ayuda del servicio pytest tmpdir y sus enlaces de inicio / finalización de testcase).

Puede configurar múltiples manejadores (con niveles) para el terminal y el sistema de archivos por separado y proporcionar sus propias opciones de cmdline para filtrar los registradores / niveles para que funcione en su entorno de prueba específico; por ejemplo, puede registrar todos los archivos en el sistema de archivos y una pequeña fracción en el terminal, lo que se puede cambiar por sesión con la opción --log si es necesario. El complemento no hace nada por defecto, si el usuario no define ningún gancho.


Un poco de una contribución tardía, pero puedo recomendar el pytest-logging para una solución de captura de registro de entrada simple. Después de pip install pytest-logging puede controlar la verbosidad de sus registros (mostrados en la pantalla) con

$ py.test -s -v tests/your_test.py $ py.test -s -vv tests/your_test.py $ py.test -s -vvvv tests/your_test.py

etc ... Nota: la py.test -s es importante, sin ella py.test filtrará toda la información de sys.stderr .