1
0
mirror of https://github.com/django/django.git synced 2025-07-05 02:09:13 +00:00

[gsoc2009-testing] Adding mock requests creation in django.test.mocks. Still needs tests and docs

git-svn-id: http://code.djangoproject.com/svn/django/branches/soc2009/test-improvements@11138 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Kevin Kubasik 2009-07-01 10:39:32 +00:00
parent b3a2f7f688
commit 614bc25954
2 changed files with 44 additions and 6 deletions

38
django/test/mocks.py Normal file
View File

@ -0,0 +1,38 @@
from django.test import Client
from django.core.handlers.wsgi import WSGIRequest
class RequestFactory(Client):
"""
Class that lets you create mock Request objects for use in testing.
Usage:
rf = RequestFactory()
get_request = rf.get('/hello/')
post_request = rf.post('/submit/', {'foo': 'bar'})
This class re-uses the django.test.client.Client interface, docs here:
http://www.djangoproject.com/documentation/testing/#the-test-client
Once you have a request object you can pass it to any view function,
just as if that view had been hooked up using a URLconf.
"""
def request(self, **request):
"""
Similar to parent class, but returns the request object as soon as it
has created it.
"""
environ = {
'HTTP_COOKIE': self.cookies,
'PATH_INFO': '/',
'QUERY_STRING': '',
'REQUEST_METHOD': 'GET',
'SCRIPT_NAME': '',
'SERVER_NAME': 'testserver',
'SERVER_PORT': 80,
'SERVER_PROTOCOL': 'HTTP/1.1',
}
environ.update(self.defaults)
environ.update(request)
return WSGIRequest(environ)

View File

@ -243,12 +243,12 @@ class TransactionTestCase(unittest.TestCase):
try:
app_mods = cache.app_models[app_label]
for tm in self.test_models:
print "importing %s " % tm
#print "importing %s " % tm
im = importlib.import_module(tm)
#cache.app_store[im] = len(cache.app_store)
print "finding model classes"
#print "finding model classes"
mod_classes = [f for f in im.__dict__.values() if hasattr(f,'__bases__') and issubclass(f,models.Model)]
print "Found models %s " % mod_classes
#print "Found models %s " % mod_classes
for mc in mod_classes:
print "Adding %s to AppCache" % mc
app_mods[mc.__name__.lower()] = mc
@ -329,12 +329,12 @@ class TransactionTestCase(unittest.TestCase):
app_mods = cache.app_models[app_label]
print app_mods
for tm in self.test_models:
print "importing %s " % tm
#print "importing %s " % tm
im = importlib.import_module(tm)
#cache.app_store[im] = len(cache.app_store)
print "finding model classes"
#print "finding model classes"
mod_classes = [f for f in im.__dict__.values() if hasattr(f,'__bases__') and issubclass(f,models.Model)]
print "Found models %s " % mod_classes
#print "Found models %s " % mod_classes
for mc in mod_classes:
print "Deleting %s from AppCache" % mc
del app_mods[mc.__name__.lower()]