Just upgraded to Django 1.3. My test suite is now showing a bunch of useless warnings like this every time I check that a given URL is 404. It didn't do that under Django 1.2.
For example, let's say we have views and URLs wired up such that this test passes:
def test_foo(self):
response = self.client.get('/foo/bar/')
self.assertEqual(response.status_code, 200)
response = self.client.get('/foo/bar2/')
self.assertEqual(response.status_code, 404)
Although the test passes, the 404 (which we expect) triggers a warning to the console:
.WARNING Not Found: /foo/bar2/
This is just useless noise; I have about 30 of them in one of my current test suites.
Is there a way to silence those just during tests? I'd like to leave them on during normal operation. And I don't think I want to filter out all warnings from the 'django.request' logger.
The warning is coming from here: https://github.com/django/django/blob/main/django/core/handlers/base.py
What you want to do is set the logging threshold of the 'django.request' module to something above WARNING (e.g. ERROR) at the beginning of the test, and then set it back afterward.
Try something like this:
import logging
#before tests
logger = logging.getLogger('django.request')
previous_level = logger.getEffectiveLevel()
logger.setLevel(logging.ERROR)
#after tests
logger.setLevel(previous_level)