summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2018-10-12 11:07:44 (GMT)
committerBerker Peksag <berker.peksag@gmail.com>2018-10-12 11:07:44 (GMT)
commitc1fe49c01f3850aaa32a7d75e47f90eb5c5f7efe (patch)
treef10c478d5521acaa47e0e4967512fc4469c09904
parentd918e98056b7ef8d90d71805531cec3e67b5450e (diff)
downloadcpython-c1fe49c01f3850aaa32a7d75e47f90eb5c5f7efe.zip
cpython-c1fe49c01f3850aaa32a7d75e47f90eb5c5f7efe.tar.gz
cpython-c1fe49c01f3850aaa32a7d75e47f90eb5c5f7efe.tar.bz2
bpo-34900: Make TestCase.debug() work with subtests (GH-9707)
(cherry picked from commit da2bf9f66d0c95b988c5d87646d168f65499b316) Co-authored-by: Bruno Oliveira <nicoddemus@gmail.com>
-rw-r--r--Lib/unittest/case.py2
-rw-r--r--Lib/unittest/test/test_case.py14
-rw-r--r--Misc/NEWS.d/next/Library/2018-10-05-05-55-53.bpo-34900.8RNiFu.rst2
3 files changed, 17 insertions, 1 deletions
diff --git a/Lib/unittest/case.py b/Lib/unittest/case.py
index c3634ec..402fa47 100644
--- a/Lib/unittest/case.py
+++ b/Lib/unittest/case.py
@@ -509,7 +509,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
diff --git a/Lib/unittest/test/test_case.py b/Lib/unittest/test/test_case.py
index b849591..04da9d0 100644
--- a/Lib/unittest/test/test_case.py
+++ b/Lib/unittest/test/test_case.py
@@ -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
diff --git a/Misc/NEWS.d/next/Library/2018-10-05-05-55-53.bpo-34900.8RNiFu.rst b/Misc/NEWS.d/next/Library/2018-10-05-05-55-53.bpo-34900.8RNiFu.rst
new file mode 100644
index 0000000..20e3a0e
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2018-10-05-05-55-53.bpo-34900.8RNiFu.rst
@@ -0,0 +1,2 @@
+Fixed :meth:`unittest.TestCase.debug` when used to call test methods with
+subtests. Patch by Bruno Oliveira.