summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRussell Keith-Magee <russell@keith-magee.com>2008-06-06 13:50:02 +0000
committerRussell Keith-Magee <russell@keith-magee.com>2008-06-06 13:50:02 +0000
commit08401959d86a48413f05b55c2af4b37fb7bf3279 (patch)
treecb3fd12b054b248fb27a6544f383870cfa145082
parent46cd8bb5b6c937969ca281f124307013454f5c15 (diff)
Fixed #7165 -- Added an assertNotContains() method to the test client. 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
-rw-r--r--AUTHORS1
-rw-r--r--django/test/testcases.py12
-rw-r--r--docs/testing.txt16
-rw-r--r--tests/regressiontests/test_client_regress/models.py6
4 files changed, 29 insertions, 6 deletions
diff --git a/AUTHORS b/AUTHORS
index b20092eb54..f7246c9548 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -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>
diff --git a/django/test/testcases.py b/django/test/testcases.py
index 5589443aed..ee83b960a6 100644
--- a/django/test/testcases.py
+++ b/django/test/testcases.py
@@ -128,6 +128,18 @@ class TestCase(unittest.TestCase):
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
diff --git a/docs/testing.txt b/docs/testing.txt
index 0ff3cce3d9..befa6979af 100644
--- a/docs/testing.txt
+++ b/docs/testing.txt
@@ -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.
@@ -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.
@@ -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
---------------
diff --git a/tests/regressiontests/test_client_regress/models.py b/tests/regressiontests/test_client_regress/models.py
index 305ccc9aa3..8a1ed27a1d 100644
--- a/tests/regressiontests/test_client_regress/models.py
+++ b/tests/regressiontests/test_client_regress/models.py
@@ -11,6 +11,7 @@ class AssertContainsTests(TestCase):
"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)
@@ -18,6 +19,11 @@ class AssertContainsTests(TestCase):
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:
self.assertEquals(str(e), "Found 0 instances of 'never' in response (expected 1)")