[Python-checkins] Use subTest in test_exceptions for better error reporting (GH-20140)

Pablo Galindo webhook-mailer at python.org
Sat May 16 20:22:05 EDT 2020


https://github.com/python/cpython/commit/af8e5f84d909487a66558d086cb1754f49221236
commit: af8e5f84d909487a66558d086cb1754f49221236
branch: master
author: Pablo Galindo <Pablogsal at gmail.com>
committer: GitHub <noreply at github.com>
date: 2020-05-17T01:22:00+01:00
summary:

Use subTest in test_exceptions for better error reporting (GH-20140)

files:
M Lib/test/test_exceptions.py

diff --git a/Lib/test/test_exceptions.py b/Lib/test/test_exceptions.py
index efd77fdbaabe1..196f31e76ccbe 100644
--- a/Lib/test/test_exceptions.py
+++ b/Lib/test/test_exceptions.py
@@ -33,16 +33,17 @@ def __str__(self):
 class ExceptionTests(unittest.TestCase):
 
     def raise_catch(self, exc, excname):
-        try:
-            raise exc("spam")
-        except exc as err:
-            buf1 = str(err)
-        try:
-            raise exc("spam")
-        except exc as err:
-            buf2 = str(err)
-        self.assertEqual(buf1, buf2)
-        self.assertEqual(exc.__name__, excname)
+        with self.subTest(exc=exc, excname=excname):
+            try:
+                raise exc("spam")
+            except exc as err:
+                buf1 = str(err)
+            try:
+                raise exc("spam")
+            except exc as err:
+                buf2 = str(err)
+            self.assertEqual(buf1, buf2)
+            self.assertEqual(exc.__name__, excname)
 
     def testRaising(self):
         self.raise_catch(AttributeError, "AttributeError")
@@ -133,13 +134,14 @@ def testSyntaxErrorMessage(self):
         # these code fragments
 
         def ckmsg(src, msg):
-            try:
-                compile(src, '<fragment>', 'exec')
-            except SyntaxError as e:
-                if e.msg != msg:
-                    self.fail("expected %s, got %s" % (msg, e.msg))
-            else:
-                self.fail("failed to get expected SyntaxError")
+            with self.subTest(src=src, msg=msg):
+                try:
+                    compile(src, '<fragment>', 'exec')
+                except SyntaxError as e:
+                    if e.msg != msg:
+                        self.fail("expected %s, got %s" % (msg, e.msg))
+                else:
+                    self.fail("failed to get expected SyntaxError")
 
         s = '''if 1:
         try:
@@ -179,15 +181,16 @@ def ckmsg(src, msg, exception=SyntaxError):
         ckmsg(s, "inconsistent use of tabs and spaces in indentation", TabError)
 
     def check(self, src, lineno, offset, encoding='utf-8'):
-        with self.assertRaises(SyntaxError) as cm:
-            compile(src, '<fragment>', 'exec')
-        self.assertEqual(cm.exception.lineno, lineno)
-        self.assertEqual(cm.exception.offset, offset)
-        if cm.exception.text is not None:
-            if not isinstance(src, str):
-                src = src.decode(encoding, 'replace')
-            line = src.split('\n')[lineno-1]
-            self.assertIn(line, cm.exception.text)
+        with self.subTest(source=src, lineno=lineno, offset=offset):
+            with self.assertRaises(SyntaxError) as cm:
+                compile(src, '<fragment>', 'exec')
+            self.assertEqual(cm.exception.lineno, lineno)
+            self.assertEqual(cm.exception.offset, offset)
+            if cm.exception.text is not None:
+                if not isinstance(src, str):
+                    src = src.decode(encoding, 'replace')
+                line = src.split('\n')[lineno-1]
+                self.assertIn(line, cm.exception.text)
 
     def testSyntaxErrorOffset(self):
         check = self.check



More information about the Python-checkins mailing list