summaryrefslogtreecommitdiffstats
path: root/Lib/unittest/test/testmock/testmagicmethods.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/unittest/test/testmock/testmagicmethods.py')
-rw-r--r--Lib/unittest/test/testmock/testmagicmethods.py55
1 files changed, 55 insertions, 0 deletions
diff --git a/Lib/unittest/test/testmock/testmagicmethods.py b/Lib/unittest/test/testmock/testmagicmethods.py
index 5ff158d..e05c6e0 100644
--- a/Lib/unittest/test/testmock/testmagicmethods.py
+++ b/Lib/unittest/test/testmock/testmagicmethods.py
@@ -126,6 +126,31 @@ class TestMockingMagicMethods(unittest.TestCase):
self.assertEqual(7 + mock, mock)
self.assertEqual(mock.value, 16)
+ def test_division(self):
+ original = mock = Mock()
+ mock.value = 32
+ self.assertRaises(TypeError, lambda: mock / 2)
+
+ def truediv(self, other):
+ mock.value /= other
+ return self
+ mock.__truediv__ = truediv
+ self.assertEqual(mock / 2, mock)
+ self.assertEqual(mock.value, 16)
+
+ del mock.__truediv__
+ def itruediv(mock):
+ mock /= 4
+ self.assertRaises(TypeError, itruediv, mock)
+ mock.__itruediv__ = truediv
+ mock /= 8
+ self.assertEqual(mock, original)
+ self.assertEqual(mock.value, 2)
+
+ self.assertRaises(TypeError, lambda: 8 / mock)
+ mock.__rtruediv__ = truediv
+ self.assertEqual(0.5 / mock, mock)
+ self.assertEqual(mock.value, 4)
def test_hash(self):
mock = Mock()
@@ -399,5 +424,35 @@ class TestMockingMagicMethods(unittest.TestCase):
self.assertEqual(list(m), [])
+ def test_divmod_and_rdivmod(self):
+ m = MagicMock()
+ self.assertIsInstance(divmod(5, m), MagicMock)
+ m.__divmod__.return_value = (2, 1)
+ self.assertEqual(divmod(m, 2), (2, 1))
+ m = MagicMock()
+ foo = divmod(2, m)
+ self.assertIsInstance(foo, MagicMock)
+ foo_direct = m.__divmod__(2)
+ self.assertIsInstance(foo_direct, MagicMock)
+ bar = divmod(m, 2)
+ self.assertIsInstance(bar, MagicMock)
+ 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()