Estoy usando py.test para probar algunos módulos míos que contienen un poco de stdlib logging. Por supuesto, me gustaría que el registro se registre en stdout, que es capturado por py.test, de modo que obtendré todos los mensajes de registro relevantes si falla una prueba.¿Cómo puedo combinar el registro de stdlib con py.test
El problema con esto es que el módulo de registro termina tratando de registrar mensajes al objeto 'stdout' proporcionado por py.test después de este objeto ha sido descartado por py.test. Es decir, me sale:
Traceback (most recent call last):
File "/usr/lib/python2.6/atexit.py", line 24, in _run_exitfuncs
func(*targs, **kargs)
File "/usr/lib/python2.6/logging/__init__.py", line 1508, in shutdown
h.flush()
File "/usr/lib/python2.6/logging/__init__.py", line 754, in flush
self.stream.flush()
ValueError: I/O operation on closed file
Si apago la captura con -s
, no tengo ningún problema, pero por supuesto que hace que la salida de la prueba con el registro ilegibles irrelevante.
¿Alguien me puede decir la forma correcta de integrar el registro stdlib con py.test?
(I intentado buscar en this, donde parece que sólo debería funcionar sin problemas, por lo que no me ayuda mucho)
¿Nos puede mostrar la forma de ejecutar su código py.test? Si eso sucede, debe ser que el registro esté configurado e inicializado ANTES de py.test, pero esto no debería ocurrir si ejecuta el código a través del ejecutable py.test. –
Lo ejecuto usando la línea de comando básica 'py.test' y lo dejo recoger y ejecutar cosas como lo desee. – porgarmingduod