diff options
author | Georg Brandl <georg@python.org> | 2007-03-07 09:21:06 (GMT) |
---|---|---|
committer | Georg Brandl <georg@python.org> | 2007-03-07 09:21:06 (GMT) |
commit | d0a962506bd69d94dcd740a9555140d09b8cf2b5 (patch) | |
tree | 7d6c988c264deacfb154fd97871772335e756de1 | |
parent | 15c5ce936f8dd2d83a02707efbeb88531f7514af (diff) | |
download | cpython-d0a962506bd69d94dcd740a9555140d09b8cf2b5.zip cpython-d0a962506bd69d94dcd740a9555140d09b8cf2b5.tar.gz cpython-d0a962506bd69d94dcd740a9555140d09b8cf2b5.tar.bz2 |
Patch #787789: allow to pass custom TestRunner instances to unittest's
main() function.
-rw-r--r-- | Doc/lib/libunittest.tex | 6 | ||||
-rw-r--r-- | Lib/unittest.py | 16 | ||||
-rw-r--r-- | Misc/NEWS | 3 |
3 files changed, 20 insertions, 5 deletions
diff --git a/Doc/lib/libunittest.tex b/Doc/lib/libunittest.tex index 350abae..782c6ed 100644 --- a/Doc/lib/libunittest.tex +++ b/Doc/lib/libunittest.tex @@ -290,6 +290,7 @@ Often, many small test cases will use the same fixture. In this case, we would end up subclassing \class{SimpleWidgetTestCase} into many small one-method classes such as \class{DefaultWidgetSizeTestCase}. This is time-consuming and + discouraging, so in the same vein as JUnit, \module{unittest} provides a simpler mechanism: @@ -540,7 +541,7 @@ easier.} \begin{funcdesc}{main}{\optional{module\optional{, defaultTest\optional{, argv\optional{, - testRunner\optional{, testRunner}}}}}} + testRunner\optional{, testLoader}}}}}} A command-line program that runs a set of tests; this is primarily for making test modules conveniently executable. The simplest use for this function is to include the following line at the end of a @@ -550,6 +551,9 @@ easier.} if __name__ == '__main__': unittest.main() \end{verbatim} + + The \var{testRunner} argument can either be a test runner class or + an already created instance of it. \end{funcdesc} In some cases, the existing tests may have been written using the diff --git a/Lib/unittest.py b/Lib/unittest.py index abd9223..0d69f52 100644 --- a/Lib/unittest.py +++ b/Lib/unittest.py @@ -776,7 +776,8 @@ Examples: in MyTestCase """ def __init__(self, module='__main__', defaultTest=None, - argv=None, testRunner=None, testLoader=defaultTestLoader): + argv=None, testRunner=TextTestRunner, + testLoader=defaultTestLoader): if type(module) == type(''): self.module = __import__(module) for part in module.split('.')[1:]: @@ -826,9 +827,16 @@ Examples: self.module) def runTests(self): - if self.testRunner is None: - self.testRunner = TextTestRunner(verbosity=self.verbosity) - result = self.testRunner.run(self.test) + if isinstance(self.testRunner, (type, types.ClassType)): + try: + testRunner = self.testRunner(verbosity=self.verbosity) + except TypeError: + # didn't accept the verbosity argument + testRunner = self.testRunner() + else: + # it is assumed to be a TestRunner instance + testRunner = self.testRunner + result = testRunner.run(self.test) sys.exit(not result.wasSuccessful()) main = TestProgram @@ -152,6 +152,9 @@ Core and builtins Library ------- +- Patch #787789: allow to pass custom TestRunner instances to unittest's + main() function. + - Patches #1550273, #1550272: fix a few bugs in unittest and add a comprehensive test suite for the module. |