mirror of
https://github.com/django/django.git
synced 2025-07-05 18:29:11 +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:
parent
b3a2f7f688
commit
614bc25954
38
django/test/mocks.py
Normal file
38
django/test/mocks.py
Normal 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)
|
@ -243,12 +243,12 @@ class TransactionTestCase(unittest.TestCase):
|
|||||||
try:
|
try:
|
||||||
app_mods = cache.app_models[app_label]
|
app_mods = cache.app_models[app_label]
|
||||||
for tm in self.test_models:
|
for tm in self.test_models:
|
||||||
print "importing %s " % tm
|
#print "importing %s " % tm
|
||||||
im = importlib.import_module(tm)
|
im = importlib.import_module(tm)
|
||||||
#cache.app_store[im] = len(cache.app_store)
|
#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)]
|
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:
|
for mc in mod_classes:
|
||||||
print "Adding %s to AppCache" % mc
|
print "Adding %s to AppCache" % mc
|
||||||
app_mods[mc.__name__.lower()] = mc
|
app_mods[mc.__name__.lower()] = mc
|
||||||
@ -329,12 +329,12 @@ class TransactionTestCase(unittest.TestCase):
|
|||||||
app_mods = cache.app_models[app_label]
|
app_mods = cache.app_models[app_label]
|
||||||
print app_mods
|
print app_mods
|
||||||
for tm in self.test_models:
|
for tm in self.test_models:
|
||||||
print "importing %s " % tm
|
#print "importing %s " % tm
|
||||||
im = importlib.import_module(tm)
|
im = importlib.import_module(tm)
|
||||||
#cache.app_store[im] = len(cache.app_store)
|
#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)]
|
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:
|
for mc in mod_classes:
|
||||||
print "Deleting %s from AppCache" % mc
|
print "Deleting %s from AppCache" % mc
|
||||||
del app_mods[mc.__name__.lower()]
|
del app_mods[mc.__name__.lower()]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user