Closes issue 11407. TestCase.run returns the result object used or created
This commit is contained in:
parent
ba3a978fc1
commit
1341bb0019
|
@ -723,7 +723,7 @@ Test cases
|
|||
Here, we create two instances of :class:`WidgetTestCase`, each of which runs a
|
||||
single test.
|
||||
|
||||
.. versionchanged::
|
||||
.. versionchanged:: 3.2
|
||||
`TestCase` can be instantiated successfully without providing a method
|
||||
name. This makes it easier to experiment with `TestCase` from the
|
||||
interactive interpreter.
|
||||
|
@ -792,11 +792,14 @@ Test cases
|
|||
Run the test, collecting the result into the test result object passed as
|
||||
*result*. If *result* is omitted or ``None``, a temporary result
|
||||
object is created (by calling the :meth:`defaultTestResult` method) and
|
||||
used. The result object is not returned to :meth:`run`'s caller.
|
||||
used. The result object is returned to :meth:`run`'s caller.
|
||||
|
||||
The same effect may be had by simply calling the :class:`TestCase`
|
||||
instance.
|
||||
|
||||
.. versionchanged:: 3.3
|
||||
Previous versions of ``run`` did not return the result. Neither did
|
||||
calling an instance.
|
||||
|
||||
.. method:: skipTest(reason)
|
||||
|
||||
|
|
|
@ -469,7 +469,7 @@ class TestCase(object):
|
|||
warnings.warn("TestResult has no addExpectedFailure method, reporting as passes",
|
||||
RuntimeWarning)
|
||||
result.addSuccess(self)
|
||||
|
||||
return result
|
||||
finally:
|
||||
result.stopTest(self)
|
||||
if orig_result is None:
|
||||
|
|
|
@ -386,27 +386,62 @@ class Test_TestCase(unittest.TestCase, TestEquality, TestHashing):
|
|||
self.assertIsInstance(Foo().id(), str)
|
||||
|
||||
|
||||
# "If result is omitted or None, a temporary result object is created
|
||||
# and used, but is not made available to the caller. As TestCase owns the
|
||||
# "If result is omitted or None, a temporary result object is created,
|
||||
# used, and is made available to the caller. As TestCase owns the
|
||||
# temporary result startTestRun and stopTestRun are called.
|
||||
|
||||
def test_run__uses_defaultTestResult(self):
|
||||
events = []
|
||||
defaultResult = LoggingResult(events)
|
||||
|
||||
class Foo(unittest.TestCase):
|
||||
def test(self):
|
||||
events.append('test')
|
||||
|
||||
def defaultTestResult(self):
|
||||
return LoggingResult(events)
|
||||
return defaultResult
|
||||
|
||||
# Make run() find a result object on its own
|
||||
Foo('test').run()
|
||||
result = Foo('test').run()
|
||||
|
||||
self.assertIs(result, defaultResult)
|
||||
expected = ['startTestRun', 'startTest', 'test', 'addSuccess',
|
||||
'stopTest', 'stopTestRun']
|
||||
self.assertEqual(events, expected)
|
||||
|
||||
|
||||
# "The result object is returned to run's caller"
|
||||
def test_run__returns_given_result(self):
|
||||
|
||||
class Foo(unittest.TestCase):
|
||||
def test(self):
|
||||
pass
|
||||
|
||||
result = unittest.TestResult()
|
||||
|
||||
retval = Foo('test').run(result)
|
||||
self.assertIs(retval, result)
|
||||
|
||||
|
||||
# "The same effect [as method run] may be had by simply calling the
|
||||
# TestCase instance."
|
||||
def test_call__invoking_an_instance_delegates_to_run(self):
|
||||
resultIn = unittest.TestResult()
|
||||
resultOut = unittest.TestResult()
|
||||
|
||||
class Foo(unittest.TestCase):
|
||||
def test(self):
|
||||
pass
|
||||
|
||||
def run(self, result):
|
||||
self.assertIs(result, resultIn)
|
||||
return resultOut
|
||||
|
||||
retval = Foo('test')(resultIn)
|
||||
|
||||
self.assertIs(retval, resultOut)
|
||||
|
||||
|
||||
def testShortDescriptionWithoutDocstring(self):
|
||||
self.assertIsNone(self.shortDescription())
|
||||
|
||||
|
|
|
@ -351,6 +351,7 @@ Lynda Hardman
|
|||
Derek Harland
|
||||
Jason Harper
|
||||
Brian Harring
|
||||
Jonathan Hartley
|
||||
Larry Hastings
|
||||
Shane Hathaway
|
||||
Rycharde Hawkes
|
||||
|
|
Loading…
Reference in New Issue