bpo-37212: Preserve keyword argument order in unittest.mock.call and error messages (GH-14310)

(cherry picked from commit 9d607061c9)

Co-authored-by: Xtreak <tir.karthi@gmail.com>
This commit is contained in:
Miss Islington (bot) 2019-09-09 04:42:43 -07:00 committed by GitHub
parent 252267925d
commit bee8bfe5f4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 6 additions and 4 deletions

View File

@ -2320,7 +2320,7 @@ def _format_call_signature(name, args, kwargs):
formatted_args = '' formatted_args = ''
args_string = ', '.join([repr(arg) for arg in args]) args_string = ', '.join([repr(arg) for arg in args])
kwargs_string = ', '.join([ kwargs_string = ', '.join([
'%s=%r' % (key, value) for key, value in sorted(kwargs.items()) '%s=%r' % (key, value) for key, value in kwargs.items()
]) ])
if args_string: if args_string:
formatted_args = args_string formatted_args = args_string

View File

@ -1563,11 +1563,11 @@ class MockTest(unittest.TestCase):
m.assert_called_once() m.assert_called_once()
self.assertNotIn("Calls:", str(e.exception)) self.assertNotIn("Calls:", str(e.exception))
#Issue21256 printout of keyword args should be in deterministic order #Issue37212 printout of keyword args now preserves the original order
def test_sorted_call_signature(self): def test_ordered_call_signature(self):
m = Mock() m = Mock()
m.hello(name='hello', daddy='hero') m.hello(name='hello', daddy='hero')
text = "call(daddy='hero', name='hello')" text = "call(name='hello', daddy='hero')"
self.assertEqual(repr(m.hello.call_args), text) self.assertEqual(repr(m.hello.call_args), text)
#Issue21270 overrides tuple methods for mock.call objects #Issue21270 overrides tuple methods for mock.call objects

View File

@ -0,0 +1,2 @@
:func:`unittest.mock.call` now preserves the order of keyword arguments in
repr output. Patch by Karthikeyan Singaravelan.