changeset: 95630:8e5592a43d65 branch: 3.4 parent: 95628:9f2bd9939d4b user: Ɓukasz Langa date: Tue Apr 14 00:12:57 2015 -0700 files: Lib/unittest/mock.py Lib/unittest/test/testmock/testmagicmethods.py Misc/ACKS Misc/NEWS description: Issue #23310: Fix MagicMock's initializer to work with __methods__. Behavior equivalent to m.configure_mock(). Patch by Kasia Jachim. diff -r 9f2bd9939d4b -r 8e5592a43d65 Lib/unittest/mock.py --- a/Lib/unittest/mock.py Tue Apr 14 09:30:01 2015 +0300 +++ b/Lib/unittest/mock.py Tue Apr 14 00:12:57 2015 -0700 @@ -1771,14 +1771,15 @@ class MagicMixin(object): def __init__(self, *args, **kw): + self._mock_set_magics() # make magic work for kwargs in init _safe_super(MagicMixin, self).__init__(*args, **kw) - self._mock_set_magics() + self._mock_set_magics() # fix magic broken by upper level init def _mock_set_magics(self): these_magics = _magics - if self._mock_methods is not None: + if getattr(self, "_mock_methods", None) is not None: these_magics = _magics.intersection(self._mock_methods) remove_magics = set() diff -r 9f2bd9939d4b -r 8e5592a43d65 Lib/unittest/test/testmock/testmagicmethods.py --- a/Lib/unittest/test/testmock/testmagicmethods.py Tue Apr 14 09:30:01 2015 +0300 +++ b/Lib/unittest/test/testmock/testmagicmethods.py Tue Apr 14 00:12:57 2015 -0700 @@ -439,5 +439,20 @@ bar_direct = m.__rdivmod__(2) self.assertIsInstance(bar_direct, MagicMock) + # http://bugs.python.org/issue23310 + # Check if you can change behaviour of magic methds in MagicMock init + def test_magic_in_initialization(self): + m = MagicMock(**{'__str__.return_value': "12"}) + self.assertEqual(str(m), "12") + + def test_changing_magic_set_in_initialization(self): + m = MagicMock(**{'__str__.return_value': "12"}) + m.__str__.return_value = "13" + self.assertEqual(str(m), "13") + m = MagicMock(**{'__str__.return_value': "12"}) + m.configure_mock(**{'__str__.return_value': "14"}) + self.assertEqual(str(m), "14") + + if __name__ == '__main__': unittest.main() diff -r 9f2bd9939d4b -r 8e5592a43d65 Misc/ACKS --- a/Misc/ACKS Tue Apr 14 09:30:01 2015 +0300 +++ b/Misc/ACKS Tue Apr 14 00:12:57 2015 -0700 @@ -632,6 +632,7 @@ Bob Ippolito Roger Irwin Atsuo Ishimoto +Kasia Jachim Adam Jackson Ben Jackson Paul Jackson diff -r 9f2bd9939d4b -r 8e5592a43d65 Misc/NEWS --- a/Misc/NEWS Tue Apr 14 09:30:01 2015 +0300 +++ b/Misc/NEWS Tue Apr 14 00:12:57 2015 -0700 @@ -173,6 +173,9 @@ - Issue #23801: Fix issue where cgi.FieldStorage did not always ignore the entire preamble to a multipart body. +- Issue #23310: Fix MagicMock's initializer to work with __methods__, just + like configure_mock(). Patch by Kasia Jachim. + Tests -----