]> granicus.if.org Git - python/commitdiff
Issue #25651: Allow falsy values to be used for msg parameter of subTest()
authorBerker Peksag <berker.peksag@gmail.com>
Wed, 21 Sep 2016 16:34:15 +0000 (19:34 +0300)
committerBerker Peksag <berker.peksag@gmail.com>
Wed, 21 Sep 2016 16:34:15 +0000 (19:34 +0300)
Lib/unittest/case.py
Lib/unittest/test/test_result.py
Misc/NEWS

index 1e4090c8facf6b625e5b3e88915c4a9e182db8e5..b523f73ff2278436b1cdcfe8a494a6e105687148 100644 (file)
@@ -17,6 +17,7 @@ from .util import (strclass, safe_repr, _count_diff_all_purpose,
 
 __unittest = True
 
+_subtest_msg_sentinel = object()
 
 DIFF_OMITTED = ('\nDiff is %s characters long. '
                  'Set self.maxDiff to None to see it.')
@@ -497,7 +498,7 @@ class TestCase(object):
             result.addSuccess(test_case)
 
     @contextlib.contextmanager
-    def subTest(self, msg=None, **params):
+    def subTest(self, msg=_subtest_msg_sentinel, **params):
         """Return a context manager that will return the enclosed block
         of code in a subtest identified by the optional message and
         keyword parameters.  A failure in the subtest marks the test
@@ -1397,7 +1398,7 @@ class _SubTest(TestCase):
 
     def _subDescription(self):
         parts = []
-        if self._message:
+        if self._message is not _subtest_msg_sentinel:
             parts.append("[{}]".format(self._message))
         if self.params:
             params_desc = ', '.join(
index e39e2eaecafd441988e83068e5a569a4d2c7070a..0a6155356373858e7ce9975fc1f8332cf94f0717 100644 (file)
@@ -323,6 +323,16 @@ class Test_TestResult(unittest.TestCase):
                     'testGetSubTestDescriptionWithoutDocstringAndParams '
                     '(' + __name__ + '.Test_TestResult) (<subtest>)')
 
+    def testGetSubTestDescriptionForFalsyValues(self):
+        expected = 'testGetSubTestDescriptionForFalsyValues (%s.Test_TestResult) [%s]'
+        result = unittest.TextTestResult(None, True, 1)
+        for arg in [0, None, []]:
+            with self.subTest(arg):
+                self.assertEqual(
+                    result.getDescription(self._subtest),
+                    expected % (__name__, arg)
+                )
+
     def testGetNestedSubTestDescriptionWithoutDocstring(self):
         with self.subTest(foo=1):
             with self.subTest(bar=2):
index f5efee1d1adb3ee4ce8737ac44c6c8cfb1536826..e6970a45798af0a923754d22d492f4dfc201ba0e 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -77,6 +77,8 @@ Core and Builtins
 Library
 -------
 
+- Issue #25651: Allow falsy values to be used for msg parameter of subTest().
+
 - Issue #27932: Prevent memory leak in win32_ver().
 
 - Fix UnboundLocalError in socket._sendfile_use_sendfile.