diff options
author | Antoine Pitrou <solipsis@pitrou.net> | 2013-03-29 16:55:24 (GMT) |
---|---|---|
committer | Antoine Pitrou <solipsis@pitrou.net> | 2013-03-29 16:55:24 (GMT) |
commit | 22e162f462b7f883b65d13c3462325c4fd163dc0 (patch) | |
tree | 4ce53a1f0e01910128c8df18db12779204ac6861 | |
parent | e612c1e29f69c6704d8382cbfeaa8358a5e7fb3b (diff) | |
download | cpython-22e162f462b7f883b65d13c3462325c4fd163dc0.zip cpython-22e162f462b7f883b65d13c3462325c4fd163dc0.tar.gz cpython-22e162f462b7f883b65d13c3462325c4fd163dc0.tar.bz2 |
Fix bug in TestResult.addSubTest()
-rw-r--r-- | Lib/unittest/result.py | 2 | ||||
-rw-r--r-- | Lib/unittest/test/test_result.py | 34 |
2 files changed, 35 insertions, 1 deletions
diff --git a/Lib/unittest/result.py b/Lib/unittest/result.py index eec4f21..f3f4b67 100644 --- a/Lib/unittest/result.py +++ b/Lib/unittest/result.py @@ -134,7 +134,7 @@ class TestResult(object): errors = self.failures else: errors = self.errors - errors.append((test, self._exc_info_to_string(err, test))) + errors.append((subtest, self._exc_info_to_string(err, test))) self._mirrorOutput = True def addSuccess(self, test): diff --git a/Lib/unittest/test/test_result.py b/Lib/unittest/test/test_result.py index fed1762..6dd9bb0 100644 --- a/Lib/unittest/test/test_result.py +++ b/Lib/unittest/test/test_result.py @@ -227,6 +227,40 @@ class Test_TestResult(unittest.TestCase): self.assertTrue(test_case is test) self.assertIsInstance(formatted_exc, str) + def test_addSubTest(self): + class Foo(unittest.TestCase): + def test_1(self): + nonlocal subtest + with self.subTest(foo=1): + subtest = self._subtest + try: + 1/0 + except ZeroDivisionError: + exc_info_tuple = sys.exc_info() + # Register an error by hand (to check the API) + result.addSubTest(test, subtest, exc_info_tuple) + # Now trigger a failure + self.fail("some recognizable failure") + + subtest = None + test = Foo('test_1') + result = unittest.TestResult() + + test.run(result) + + self.assertFalse(result.wasSuccessful()) + self.assertEqual(len(result.errors), 1) + self.assertEqual(len(result.failures), 1) + self.assertEqual(result.testsRun, 1) + self.assertEqual(result.shouldStop, False) + + test_case, formatted_exc = result.errors[0] + self.assertIs(test_case, subtest) + self.assertIn("ZeroDivisionError", formatted_exc) + test_case, formatted_exc = result.failures[0] + self.assertIs(test_case, subtest) + self.assertIn("some recognizable failure", formatted_exc) + def testGetDescriptionWithoutDocstring(self): result = unittest.TextTestResult(None, True, 1) self.assertEqual( |