mirror of
https://github.com/python/cpython.git
synced 2025-08-27 04:05:34 +00:00
bpo-30664: The description of a unittest subtest now preserves the (#2265)
order of keyword arguments of TestCase.subTest().
This commit is contained in:
parent
c38e32a100
commit
48fbe52ac7
3 changed files with 29 additions and 7 deletions
|
@ -338,6 +338,16 @@ class _AssertLogsContext(_BaseTestCaseContext):
|
|||
.format(logging.getLevelName(self.level), self.logger.name))
|
||||
|
||||
|
||||
class _OrderedChainMap(collections.ChainMap):
|
||||
def __iter__(self):
|
||||
seen = set()
|
||||
for mapping in self.maps:
|
||||
for k in mapping:
|
||||
if k not in seen:
|
||||
seen.add(k)
|
||||
yield k
|
||||
|
||||
|
||||
class TestCase(object):
|
||||
"""A class whose instances are single test cases.
|
||||
|
||||
|
@ -514,7 +524,7 @@ class TestCase(object):
|
|||
return
|
||||
parent = self._subtest
|
||||
if parent is None:
|
||||
params_map = collections.ChainMap(params)
|
||||
params_map = _OrderedChainMap(params)
|
||||
else:
|
||||
params_map = parent.params.new_child(params)
|
||||
self._subtest = _SubTest(self, msg, params_map)
|
||||
|
@ -1418,7 +1428,7 @@ class _SubTest(TestCase):
|
|||
if self.params:
|
||||
params_desc = ', '.join(
|
||||
"{}={!r}".format(k, v)
|
||||
for (k, v) in sorted(self.params.items()))
|
||||
for (k, v) in self.params.items())
|
||||
parts.append("({})".format(params_desc))
|
||||
return " ".join(parts) or '(<subtest>)'
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue