diff --git a/django/test/mocks.py b/django/test/mocks.py new file mode 100644 index 0000000000..94048a2a2a --- /dev/null +++ b/django/test/mocks.py @@ -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) diff --git a/django/test/testcases.py b/django/test/testcases.py index bda0a35655..e8a4c1f873 100644 --- a/django/test/testcases.py +++ b/django/test/testcases.py @@ -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()]