#23300: TestCase.assertTemplateUsed passes erroneously on an HttpResponse
-------------------------------------+-------------------------------------
Reporter: zags | Owner: nobody
Type: Bug | Status: new
Component: Testing framework | Version: 1.6
Severity: Normal | Resolution:
Keywords: asserttemplateused | Triage Stage: Accepted
template | Needs documentation: 1
Has patch: 1 | Patch needs improvement: 1
Needs tests: 1 | UI/UX: 0
Easy pickings: 0 |
-------------------------------------+-------------------------------------
Changes (by bmispelon):
* needs_better_patch: 0 => 1
* stage: Unreviewed => Accepted
* needs_tests: 0 => 1
* needs_docs: 0 => 1
Comment:
Hi,
You can find the documentation for `assertTemplateused` at
https://docs.djangoproject.com/en/dev/topics/testing/tools/#django.test.SimpleTestCase.assertTemplateUsed.
I looked into the issue a little bit and I agree with your analysis.
As a fix, I would suggest raising an exception when trying to use
`assertTemplateUsed` (or `assertTemplateNotUsed`) on a response object
that doesn't have any `templates` attributes.
Here's a simple patch that should apply cleanly on master:
{{{#!diff
diff --git a/django/test/testcases.py b/django/test/testcases.py
index d46f672..6f7ab71 100644
--- a/django/test/testcases.py
+++ b/django/test/testcases.py
@@ -502,10 +502,12 @@ class SimpleTestCase(unittest.TestCase):
"the response" % formset)
def _assert_template_used(self, response, template_name, msg_prefix):
-
if response is None and template_name is None:
raise TypeError('response and/or template_name argument must
be provided')
+ if template_name is not None and response is not None and not
hasattr(response, 'templates'):
+ raise ValueError("Response object %r has no attribute
'templates'." % response)
+
if msg_prefix:
msg_prefix += ": "
}}}
With this fix, your example now raises an exception and Django's test
suite still passes.
--
Ticket URL: <https://code.djangoproject.com/ticket/23300#comment:2>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/062.8ca8c86b312787aef84bfac2a4b14bd7%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.