From 5cd6477fd6ea31eeb4d281e8e431b7a5fb8038a1 Mon Sep 17 00:00:00 2001 From: Dominic Rodger Date: Sun, 8 Dec 2013 23:07:04 +0000 Subject: [PATCH] Fixed #21462 -- Made `assertNumQueries` print executed queries on failure. --- django/test/testcases.py | 8 ++++++-- docs/releases/1.7.txt | 3 +++ tests/test_utils/tests.py | 1 + 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/django/test/testcases.py b/django/test/testcases.py index 64e2e3c591..9e1b568191 100644 --- a/django/test/testcases.py +++ b/django/test/testcases.py @@ -103,8 +103,12 @@ class _AssertNumQueriesContext(CaptureQueriesContext): return executed = len(self) self.test_case.assertEqual( - executed, self.num, "%d queries executed, %d expected" % ( - executed, self.num + executed, self.num, + "%d queries executed, %d expected\nCaptured queries were:\n%s" % ( + executed, self.num, + '\n'.join( + query['sql'] for query in self.captured_queries + ) ) ) diff --git a/docs/releases/1.7.txt b/docs/releases/1.7.txt index 5014358ae9..29bd5c3336 100644 --- a/docs/releases/1.7.txt +++ b/docs/releases/1.7.txt @@ -713,6 +713,9 @@ Miscellaneous ``select_related('foo').select_related('bar')``. Previously the latter would have been equivalent to ``select_related('bar')``. +* :meth:`~django.test.TransactionTestCase.assertNumQueries` now prints + out the list of executed queries if the assertion fails. + Features deprecated in 1.7 ========================== diff --git a/tests/test_utils/tests.py b/tests/test_utils/tests.py index 7426155e2a..999b59faea 100644 --- a/tests/test_utils/tests.py +++ b/tests/test_utils/tests.py @@ -192,6 +192,7 @@ class AssertNumQueriesContextManagerTests(TestCase): with self.assertNumQueries(2): Person.objects.count() self.assertIn("1 queries executed, 2 expected", str(exc_info.exception)) + self.assertIn("Captured queries were", str(exc_info.exception)) with self.assertRaises(TypeError): with self.assertNumQueries(4000):