Issue #23310: Fix MagicMock's initializer to work with __methods__.

Behavior equivalent to m.configure_mock().  Patch by Kasia Jachim.
This commit is contained in:
Łukasz Langa 2015-04-13 23:12:42 -07:00
parent cd1aa9158e
commit a468db9b0b
4 changed files with 22 additions and 2 deletions

View file

@ -450,5 +450,20 @@ class TestMockingMagicMethods(unittest.TestCase):
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()