2016-05-19 12 views
5

Ich habe den Eindruck (aber finde die Dokumentation dafür nicht), dass unittest den Logging-Level auf WARNINGfür alle Logger setzt. Ich möchte:Log-Level in Unittest ändern

  • der Lage sein, die Protokollstufe für alle Logger angeben, von der Kommandozeile (wenn die Tests ausgeführt wird) oder aus dem Testmodul selbst
  • vermeiden Unittest Herumspielen mit dem Anwendungsprotokollebene : Wenn ich die Tests ausführe, möchte ich die gleiche Logging-Ausgabe (gleiche Level) wie beim Ausführen der Anwendung haben.

Wie kann ich das erreichen?

+0

Wie üblich, können Sie ein minimales, aber vollständiges Beispiel mit der erwarteten und tatsächlichen Ausgabe geben? –

Antwort

1

Siehe Beispiel für die Anmeldung in Python. Sie können LOG_LEVEL auch mit der Methode 'setLevel' ändern.

import os 
import logging 

logging.basicConfig() 
logger = logging.getLogger(__name__) 

# Change logging level here. 
logger.setLevel(os.environ.get('LOG_LEVEL', logging.INFO)) 

logger.info('For INFO message') 
logger.debug('For DEBUG message') 
logger.warn('For WARNING message') 
logger.error('For ERROR message') 
logger.fatal('For CRITICAL message') 
+0

So wird das Python Logging Framework eingerichtet. Aber OP deutet an, dass dies nicht funktioniert, wenn unittest beteiligt ist. Unittest vermasselt Dinge für ihn, also _why_ und _how_ und _was zu tun_? –