2010-06-12 15 views
7

Utilizo el módulo de registro de python estándar. Cuando llamo al python manage.py test me gustaría deshabilitar el registro antes de ejecutar todas las pruebas. ¿Hay alguna señal u otro tipo de gancho que pueda usar para llamar a logging.disable? ¿O hay alguna otra forma de desactivar el registro cuando se ejecuta python manage.py test?¿Deshabilitar el registro durante la prueba manage.py?

Respuesta

2

La única forma que conozco es editar manage.py en sí ... no es muy elegante, por supuesto, pero al menos debería llevarte a donde necesitas estar.

+0

Ah, yo no había pensado en eso (... bueno, obviamente) . ¡Gracias! –

+0

@Eric, ¡de nada! –

9

Como una alternativa fácil, puede deshabilitar el registro cuando se ejecuta pruebas en la configuración de presentar la siguiente manera:

if 'test' in sys.argv: 
    logger.removeHandler(handler) 
    logger.setLevel(logging.ERROR) 
+0

¡Gracias - trabajado como un encanto! –

4

prefiero las pruebas realizadas con settings_test.py separada, donde puedo eliminar aplicaciones innecesarias, middleware y otros cosas que no necesito durante las pruebas. Y puedo desactivar salida de registro aquí también de esta manera:

from settings import * 
import logging 

# direct all logging output to nowhere 
class NullHandler(logging.Handler): 
    def emit(self, record): 
     pass 
logging.getLogger().addHandler(NullHandler()) 
12

realidad, hay una manera mucho mejor de hacerlo, con django-nose hay un kwarg:

Sólo tiene que ejecutar:

./bin/manage.py test --logging-clear-handlers 
+1

./manage.py: error: no existe dicha opción: --logging-clear-handlers –

+1

De hecho, no he especificado, pero se necesita django-nose para eso: https://github.com/jbalogh/django- nose y https://nose.readthedocs.org/en/latest/usage.html?highlight=#cmdoption--logging-clear-handlers – Rmatt

5

cosa más fácil que he utilizado:

import logging 

class MyTestClass(TestCase): 
    def setUp(self): 
     logging.disable(logging.CRITICAL) 

Esto requiere ningún tipo de edición, parches, instalaciones adicionales, y así sucesivamente. Todo el registro se apaga por completo.

0

Si está utilizando django-nose, entonces se puede añadir el siguiente fragmento de código a su archivo settings.py desactivar salida de registro cuando se ejecuta ./manage.py test

NOSE_ARGS = [ 
    '--nologcapture' 
] 
Cuestiones relacionadas