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 | |
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
-rw-r--r-- | Doc/library/unittest.rst | 7 | ||||
-rw-r--r-- | Lib/unittest/case.py | 2 | ||||
-rw-r--r-- | Lib/unittest/test/test_case.py | 43 | ||||
-rw-r--r-- | Misc/ACKS | 1 | ||||
-rw-r--r-- | Misc/NEWS | 3 |
5 files changed, 49 insertions, 7 deletions
diff --git a/Doc/library/unittest.rst b/Doc/library/unittest.rst index a3de29b..a4e2cab 100644 --- a/Doc/library/unittest.rst +++ b/Doc/library/unittest.rst @@ -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) 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()) @@ -351,6 +351,7 @@ Lynda Hardman Derek Harland Jason Harper Brian Harring +Jonathan Hartley Larry Hastings Shane Hathaway Rycharde Hawkes @@ -68,6 +68,9 @@ Core and Builtins Library ------- +- Issue #11407: `TestCase.run` returns the result object used or created. + Contributed by Janathan Hartley. + - Issue #11500: Fixed a bug in the os x proxy bypass code for fully qualified IP addresses in the proxy exception list. |