]> granicus.if.org Git - python/commitdiff
bpo-37212: Preserve keyword argument order in unittest.mock.call and error messages...
authorXtreak <tir.karthi@gmail.com>
Mon, 9 Sep 2019 10:55:22 +0000 (16:25 +0530)
committerZachary Ware <zachary.ware@gmail.com>
Mon, 9 Sep 2019 10:55:22 +0000 (05:55 -0500)
Lib/unittest/mock.py
Lib/unittest/test/testmock/testmock.py
Misc/NEWS.d/next/Library/2019-06-22-22-00-35.bpo-37212.Zhv-tq.rst [new file with mode: 0644]

index 89312f18c96746252ca606ed36dd01985c18a341..c9194fff43863575ef4dd166e58860bd5049576c 100644 (file)
@@ -2320,7 +2320,7 @@ def _format_call_signature(name, args, kwargs):
     formatted_args = ''
     args_string = ', '.join([repr(arg) for arg in args])
     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:
         formatted_args = args_string
index 265eb1bba56caaedf132b8887148cef08db7275e..581afaaeb815dfe42298079e1ed39ae80da52539 100644 (file)
@@ -1571,11 +1571,11 @@ class MockTest(unittest.TestCase):
             m.assert_called_once()
         self.assertNotIn("Calls:", str(e.exception))
 
-    #Issue21256 printout of keyword args should be in deterministic order
-    def test_sorted_call_signature(self):
+    #Issue37212 printout of keyword args now preserves the original order
+    def test_ordered_call_signature(self):
         m = Mock()
         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)
 
     #Issue21270 overrides tuple methods for mock.call objects
diff --git a/Misc/NEWS.d/next/Library/2019-06-22-22-00-35.bpo-37212.Zhv-tq.rst b/Misc/NEWS.d/next/Library/2019-06-22-22-00-35.bpo-37212.Zhv-tq.rst
new file mode 100644 (file)
index 0000000..520a022
--- /dev/null
@@ -0,0 +1,2 @@
+:func:`unittest.mock.call` now preserves the order of keyword arguments in
+repr output. Patch by Karthikeyan Singaravelan.