#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.

Reply via email to