Search code examples
pythondjangounit-testingloggingpython-logging

How can I disable logging while running unit tests in Python Django?


I am using a simple unit test based test runner to test my Django application.

My application itself is configured to use a basic logger in settings.py using:

logging.basicConfig(level=logging.DEBUG)

And in my application code using:

logger = logging.getLogger(__name__)
logger.setLevel(getattr(settings, 'LOG_LEVEL', logging.DEBUG))

However, when running unittests, I'd like to disable logging so that it doesn't clutter my test result output. Is there a simple way to turn off logging in a global way, so that the application specific loggers aren't writing stuff out to the console when I run tests?


Solution

  • logging.disable(logging.CRITICAL)
    

    will disable all logging calls with levels less severe than or equal to CRITICAL. Logging can be re-enabled with

    logging.disable(logging.NOTSET)