diff options
author | Berker Peksag <berker.peksag@gmail.com> | 2016-09-21 19:34:15 +0300 |
---|---|---|
committer | Berker Peksag <berker.peksag@gmail.com> | 2016-09-21 19:34:15 +0300 |
commit | 16ea19fc6653ee4ec1be7cd0206073962119ac08 (patch) | |
tree | 79f3750b60bd421f707f13232b475ca3b642a5e5 | |
parent | 1ddf53d496a3b7bd09fe8672daa2f07a4d240f2c (diff) | |
download | cpython-git-16ea19fc6653ee4ec1be7cd0206073962119ac08.tar.gz |
Issue #25651: Allow falsy values to be used for msg parameter of subTest()
-rw-r--r-- | Lib/unittest/case.py | 5 | ||||
-rw-r--r-- | Lib/unittest/test/test_result.py | 10 | ||||
-rw-r--r-- | Misc/NEWS | 2 |
3 files changed, 15 insertions, 2 deletions
diff --git a/Lib/unittest/case.py b/Lib/unittest/case.py index 1e4090c8fa..b523f73ff2 100644 --- a/Lib/unittest/case.py +++ b/Lib/unittest/case.py @@ -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( diff --git a/Lib/unittest/test/test_result.py b/Lib/unittest/test/test_result.py index e39e2eaeca..0a61553563 100644 --- a/Lib/unittest/test/test_result.py +++ b/Lib/unittest/test/test_result.py @@ -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): @@ -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. |