diff options
| author | Russell Keith-Magee <russell@keith-magee.com> | 2006-08-27 12:24:59 +0000 |
|---|---|---|
| committer | Russell Keith-Magee <russell@keith-magee.com> | 2006-08-27 12:24:59 +0000 |
| commit | 7dce86ce0220ffb9f3f579cbd1e881e988764c9d (patch) | |
| tree | 87faf4ebeeb10495163dc84c006dab201ec486bf /django/test/simple.py | |
| parent | 1a1fb70c9f7c6c286a424710e2a496e79b4b6484 (diff) | |
Refs #2333 - Added test framework. This includes doctest and unittest finders, Django-specific doctest and unittest wrappers, and a pseudo-client that can be used to stimulate and test views.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@3658 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'django/test/simple.py')
| -rw-r--r-- | django/test/simple.py | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/django/test/simple.py b/django/test/simple.py new file mode 100644 index 0000000000..e72f693459 --- /dev/null +++ b/django/test/simple.py @@ -0,0 +1,67 @@ +import unittest, doctest +from django.conf import settings +from django.core import management +from django.test.utils import create_test_db, destroy_test_db +from django.test.testcases import OutputChecker, DocTestRunner + +# The module name for tests outside models.py +TEST_MODULE = 'tests' + +doctestOutputChecker = OutputChecker() + +def build_suite(app_module): + "Create a complete Django test suite for the provided application module" + suite = unittest.TestSuite() + + # Load unit and doctests in the models.py file + suite.addTest(unittest.defaultTestLoader.loadTestsFromModule(app_module)) + try: + suite.addTest(doctest.DocTestSuite(app_module, + checker=doctestOutputChecker, + runner=DocTestRunner)) + except ValueError: + # No doc tests in models.py + pass + + # Check to see if a separate 'tests' module exists parallel to the + # models module + try: + app_path = app_module.__name__.split('.')[:-1] + test_module = __import__('.'.join(app_path + [TEST_MODULE]), [], [], TEST_MODULE) + + suite.addTest(unittest.defaultTestLoader.loadTestsFromModule(test_module)) + try: + suite.addTest(doctest.DocTestSuite(test_module, + checker=doctestOutputChecker, + runner=DocTestRunner)) + except ValueError: + # No doc tests in tests.py + pass + except ImportError: + # No tests.py file for application + pass + + return suite + +def run_tests(module_list, verbosity=1, extra_tests=[]): + """ + Run the unit tests for all the modules in the provided list. + This testrunner will search each of the modules in the provided list, + looking for doctests and unittests in models.py or tests.py within + the module. A list of 'extra' tests may also be provided; these tests + will be added to the test suite. + """ + + settings.DEBUG = False + suite = unittest.TestSuite() + + for module in module_list: + suite.addTest(build_suite(module)) + + for test in extra_tests: + suite.addTest(test) + + old_name = create_test_db(verbosity) + management.syncdb(verbosity, interactive=False) + unittest.TextTestRunner(verbosity=verbosity).run(suite) + destroy_test_db(old_name, verbosity) |
