web.web.test

Package web :: Package web :: Module test |
[hide private]
[frames] | no frames]

# Source Code for Module web.web.test

     1  """test utilities
     2  (part of web.py)
     3  """
     4  import unittest
     5  import sys, os
     6  import web
     7
     8  TestCase = unittest.TestCase
     9  TestSuite = unittest.TestSuite
    10
    11 -def load_modules(names):
    12      return [__import__(name, None, None, "x") for name in names]
    13
    14 -def module_suite(module, classnames=None):
    15      """Makes a suite from a module."""
    16      if classnames:
    17          return unittest.TestLoader().loadTestsFromNames(classnames, module)
    18      elif hasattr(module, 'suite'):
    19          return module.suite()
    20      else:
    21          return unittest.TestLoader().loadTestsFromModule(module)
    22
    23 -def doctest_suite(module_names):
    24      """Makes a test suite from doctests."""
    25      import doctest
    26      suite = TestSuite()
    27      for mod in load_modules(module_names):
    28          suite.addTest(doctest.DocTestSuite(mod))
    29      return suite
    30
    31 -def suite(module_names):
    32      """Creates a suite from multiple modules."""
    33      suite = TestSuite()
    34      for mod in load_modules(module_names):
    35          suite.addTest(module_suite(mod))
    36      return suite
    37
    38 -def runTests(suite):
    39      runner = unittest.TextTestRunner()
    40      return runner.run(suite)
    41
    42 -def main(suite=None):
    43      if not suite:
    44          main_module = __import__('__main__')
    45          # allow command line switches
    46          args = [a for a in sys.argv[1:] if not a.startswith('-')]
    47          suite = module_suite(main_module, args or None)
    48
    49      result = runTests(suite)
    50      sys.exit(not result.wasSuccessful())
    51