diff options
author | Michael Foord <michael@python.org> | 2011-03-14 23:01:46 (GMT) |
---|---|---|
committer | Michael Foord <michael@python.org> | 2011-03-14 23:01:46 (GMT) |
commit | 1341bb0019868345bab8adff94263c81e1d66eae (patch) | |
tree | 95af5b839e2972aa3d678484da0c2eac95fb2f69 /Lib | |
parent | ba3a978fc1b877bd61602e6997d960a98e474311 (diff) | |
download | cpython-1341bb0019868345bab8adff94263c81e1d66eae.zip cpython-1341bb0019868345bab8adff94263c81e1d66eae.tar.gz cpython-1341bb0019868345bab8adff94263c81e1d66eae.tar.bz2 |
Closes issue 11407. TestCase.run returns the result object used or created
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/unittest/case.py | 2 | ||||
-rw-r--r-- | Lib/unittest/test/test_case.py | 43 |
2 files changed, 40 insertions, 5 deletions
diff --git a/Lib/unittest/case.py b/Lib/unittest/case.py index 270e5e8..4e47707 100644 --- a/Lib/unittest/case.py +++ b/Lib/unittest/case.py @@ -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: diff --git a/Lib/unittest/test/test_case.py b/Lib/unittest/test/test_case.py index 351b6f8..852ac86 100644 --- a/Lib/unittest/test/test_case.py +++ b/Lib/unittest/test/test_case.py @@ -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()) |