Fixed #23300 -- Made assertTemplateUsed throw an error on responses not fetched using the test client.

Thanks zags for the report and bmispelon for the patch.
This commit is contained in:
Davide Ceretti 2014-10-11 17:53:29 +01:00 committed by Tim Graham
parent ca88aa34ad
commit 2d06e3155a
2 changed files with 18 additions and 0 deletions

View File

@ -518,6 +518,12 @@ class SimpleTestCase(unittest.TestCase):
if msg_prefix: if msg_prefix:
msg_prefix += ": " msg_prefix += ": "
if template_name is not None and response is not None and not hasattr(response, 'templates'):
raise ValueError(
"assertTemplateUsed() and assertTemplateNotUsed() are only "
"usable on responses fetched using the Django test Client."
)
if not hasattr(response, 'templates') or (response is None and template_name): if not hasattr(response, 'templates') or (response is None and template_name):
if response: if response:
template_name = response template_name = response

View File

@ -385,6 +385,18 @@ class AssertTemplateUsedContextManagerTests(TestCase):
with self.assertTemplateUsed('template_used/base.html'): with self.assertTemplateUsed('template_used/base.html'):
render_to_string('template_used/alternative.html') render_to_string('template_used/alternative.html')
def test_assert_used_on_http_response(self):
response = HttpResponse()
error_msg = (
'assertTemplateUsed() and assertTemplateNotUsed() are only '
'usable on responses fetched using the Django test Client.'
)
with self.assertRaisesMessage(ValueError, error_msg):
self.assertTemplateUsed(response, 'template.html')
with self.assertRaisesMessage(ValueError, error_msg):
self.assertTemplateNotUsed(response, 'template.html')
class HTMLEqualTests(TestCase): class HTMLEqualTests(TestCase):
def test_html_parser(self): def test_html_parser(self):