bpo-34900: Make TestCase.debug() work with subtests (GH-9707)

(cherry picked from commit da2bf9f66d)

Co-authored-by: Bruno Oliveira <nicoddemus@gmail.com>
This commit is contained in:
Miss Islington (bot) 2018-10-12 04:07:01 -07:00 committed by Berker Peksag
parent c327a5499f
commit 7a98e302c3
3 changed files with 17 additions and 1 deletions

View File

@ -519,7 +519,7 @@ class TestCase(object):
case as failed but resumes execution at the end of the enclosed
block, allowing further test code to be executed.
"""
if not self._outcome.result_supports_subtests:
if self._outcome is None or not self._outcome.result_supports_subtests:
yield
return
parent = self._subtest

View File

@ -425,6 +425,20 @@ class Test_TestCase(unittest.TestCase, TestEquality, TestHashing):
expected = ['a1', 'a2', 'b1']
self.assertEqual(events, expected)
def test_subtests_debug(self):
# Test debug() with a test that uses subTest() (bpo-34900)
events = []
class Foo(unittest.TestCase):
def test_a(self):
events.append('test case')
with self.subTest():
events.append('subtest 1')
Foo('test_a').debug()
self.assertEqual(events, ['test case', 'subtest 1'])
# "This class attribute gives the exception raised by the test() method.
# If a test framework needs to use a specialized exception, possibly to
# carry additional information, it must subclass this exception in

View File

@ -0,0 +1,2 @@
Fixed :meth:`unittest.TestCase.debug` when used to call test methods with
subtests. Patch by Bruno Oliveira.