Skip to content

Commit

Permalink
Fixed #7165 -- Added an assertNotContains() method to the test client…
Browse files Browse the repository at this point in the history
…. Thanks for the suggestion and implementation, J. Pablo Fernandez <pupeno@pupeno.com>.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@7578 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information
freakboy3742 committed Jun 6, 2008
1 parent 46cd8bb commit 0840195
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 6 deletions.
1 change: 1 addition & 0 deletions AUTHORS
Expand Up @@ -142,6 +142,7 @@ answer newbie questions, and generally made Django that much better:
Bill Fenner <fenner@gmail.com>
Stefane Fermgier <sf@fermigier.com>
Afonso Fernández Nogueira <fonzzo.django@gmail.com>
J. Pablo Fernandez <pupeno@pupeno.com>
Matthew Flanagan <http://wadofstuff.blogspot.com>
Eric Floehr <eric@intellovations.com>
Vincent Foley <vfoleybourgon@yahoo.ca>
Expand Down
12 changes: 12 additions & 0 deletions django/test/testcases.py
Expand Up @@ -128,6 +128,18 @@ def assertContains(self, response, text, count=None, status_code=200):
self.failUnless(real_count != 0,
"Couldn't find '%s' in response" % text)

def assertNotContains(self, response, text, status_code=200):
"""
Asserts that a response indicates that a page was retrieved
successfully, (i.e., the HTTP status code was as expected), and that
``text`` doesn't occurs in the content of the response.
"""
self.assertEqual(response.status_code, status_code,
"Couldn't retrieve page: Response code was %d (expected %d)'" %
(response.status_code, status_code))
self.assertEqual(response.content.count(text), 0,
"Response should not contain '%s'" % text)

def assertFormError(self, response, form, field, errors):
"""
Asserts that a form used to render the response has a specific field
Expand Down
16 changes: 10 additions & 6 deletions docs/testing.txt
Expand Up @@ -822,6 +822,10 @@ useful for testing Web applications:
that ``text`` appears in the content of the response. If ``count`` is
provided, ``text`` must occur exactly ``count`` times in the response.

``assertNotContains(response, text, status_code=200)``
Asserts that a ``Response`` instance produced the given ``status_code`` and
that ``text`` does not appears in the content of the response.

``assertFormError(response, form, field, errors)``
Asserts that a field on a form raises the provided list of errors when
rendered on the form.
Expand All @@ -837,6 +841,12 @@ useful for testing Web applications:
``errors`` is an error string, or a list of error strings, that are
expected as a result of form validation.

``assertTemplateUsed(response, template_name)``
Asserts that the template with the given name was used in rendering the
response.

The name is a string such as ``'admin/index.html'``.

``assertTemplateNotUsed(response, template_name)``
Asserts that the template with the given name was *not* used in rendering
the response.
Expand All @@ -846,12 +856,6 @@ useful for testing Web applications:
it redirected to ``expected_url`` (including any GET data), and the subsequent
page was received with ``target_status_code``.

``assertTemplateUsed(response, template_name)``
Asserts that the template with the given name was used in rendering the
response.

The name is a string such as ``'admin/index.html'``.

E-mail services
---------------

Expand Down
6 changes: 6 additions & 0 deletions tests/regressiontests/test_client_regress/models.py
Expand Up @@ -11,12 +11,18 @@ def test_contains(self):
"Responses can be inspected for content, including counting repeated substrings"
response = self.client.get('/test_client_regress/no_template_view/')

self.assertNotContains(response, 'never')
self.assertContains(response, 'never', 0)
self.assertContains(response, 'once')
self.assertContains(response, 'once', 1)
self.assertContains(response, 'twice')
self.assertContains(response, 'twice', 2)

try:
self.assertNotContains(response, 'once')
except AssertionError, e:
self.assertEquals(str(e), "Response should not contain 'once'")

try:
self.assertContains(response, 'never', 1)
except AssertionError, e:
Expand Down

0 comments on commit 0840195

Please sign in to comment.