Patch #787789: allow to pass custom TestRunner instances to unittest's
main() function.
This commit is contained in:
parent
15c5ce936f
commit
d0a962506b
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue