I use these helper methods in my unit tests. They turn many simple getting-and-posting tests into one-liners. Definitely a work in progress, and I can't be the only person who has done this sort of thing -- comments are more than welcome.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | from django.test import TestCase
from django.test.client import Client
class ClientTest(TestCase):
"""
Small test suite to demonstrate helper methods.
You'd probably want to abstract these to your own subclass
of django.test.TestCase so you could import and use it in
each of your tests.py files.
"""
def setUp(self):
"""This method is automatically called by the Django test framework."""
self.client = Client()
def GET(self, url, status=200, mimetype="text/html"):
"""Get a URL and require a specific status code before proceeding"""
response = self.client.get(url)
self.failUnlessEqual(response.status_code, status)
self.failUnless(response.headers['Content-Type'].startswith(mimetype))
return response
def POST(self, url, params, status=200, mimetype="text/html"):
"""Make a POST and require a specific status code before proceeding"""
response = self.client.post(url, params)
self.failUnlessEqual(response.status_code, status)
self.failUnless(response.headers['Content-Type'].startswith(mimetype))
return response
def test_examples(self):
# Here we expect a 200 response, so we don't need to specify
self.GET("/")
# Here we specify we're looking for a 404
self.GET("/boguspath/", status=404)
# Here we're also interested in the mimetype
self.GET("/robots.txt", mimetype="text/plain")
# Here we test a post and see whether it redirects on success.
sample = {
'name': "Bob the Builder",
'slogan': "Yes we can!",
}
response = self.POST("/", sample, status=302)
# We'd also want to inspect the response to see *where* it
# redirects to, etc.
|
More like this
- Generate and render HTML Table by LLyaudet 5 days, 9 hours ago
- My firs Snippets by GutemaG 1 week, 1 day ago
- FileField having auto upload_to path by junaidmgithub 1 month, 2 weeks ago
- LazyPrimaryKeyRelatedField by LLyaudet 1 month, 3 weeks ago
- CacheInDictManager by LLyaudet 1 month, 3 weeks ago
Comments
You can even add some shortcut methods like assertCanBeFound(url), assertTemporaryMoved(url), assertPermanentlyMoved(url), assertOKResponse(url), etc...
#
Please login first before commenting.