Issue #23310: Fix MagicMock's initializer to work with __methods__.
Behavior equivalent to m.configure_mock().  Patch by Kasia Jachim.
diff --git a/Lib/unittest/mock.py b/Lib/unittest/mock.py
index dcb2d8f..1b1c9f4 100644
--- a/Lib/unittest/mock.py
+++ b/Lib/unittest/mock.py
@@ -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 --git a/Lib/unittest/test/testmock/testmagicmethods.py b/Lib/unittest/test/testmock/testmagicmethods.py
index 73b717d..e05c6e0 100644
--- a/Lib/unittest/test/testmock/testmagicmethods.py
+++ b/Lib/unittest/test/testmock/testmagicmethods.py
@@ -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 --git a/Misc/ACKS b/Misc/ACKS
index e0ade24..7de6de6 100644
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -632,6 +632,7 @@
 Bob Ippolito
 Roger Irwin
 Atsuo Ishimoto
+Kasia Jachim
 Adam Jackson
 Ben Jackson
 Paul Jackson
diff --git a/Misc/NEWS b/Misc/NEWS
index a38f395..54f6330 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -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
 -----