diff options
| author | Russell Keith-Magee <russell@keith-magee.com> | 2008-06-06 13:50:02 +0000 |
|---|---|---|
| committer | Russell Keith-Magee <russell@keith-magee.com> | 2008-06-06 13:50:02 +0000 |
| commit | 08401959d86a48413f05b55c2af4b37fb7bf3279 (patch) | |
| tree | cb3fd12b054b248fb27a6544f383870cfa145082 | |
| parent | 46cd8bb5b6c937969ca281f124307013454f5c15 (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-- | AUTHORS | 1 | ||||
| -rw-r--r-- | django/test/testcases.py | 12 | ||||
| -rw-r--r-- | docs/testing.txt | 16 | ||||
| -rw-r--r-- | tests/regressiontests/test_client_regress/models.py | 6 |
4 files changed, 29 insertions, 6 deletions
@@ -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)") |
