]> granicus.if.org Git - python/commitdiff
Process DEFAULT values in mock side_effect that returns iterator.
authorAndrew Svetlov <andrew.svetlov@gmail.com>
Sun, 7 Apr 2013 13:42:24 +0000 (16:42 +0300)
committerAndrew Svetlov <andrew.svetlov@gmail.com>
Sun, 7 Apr 2013 13:42:24 +0000 (16:42 +0300)
Patch by Michael Ford.

Lib/unittest/mock.py
Lib/unittest/test/testmock/testmock.py

index 57bf957a98e1b33c8ffff441ef1bc73dc21bc6da..073869a1f12a3b7e5bbd6d09ac50c861ebfc90ae 100644 (file)
@@ -904,6 +904,8 @@ class CallableMixin(Base):
                 result = next(effect)
                 if _is_exception(result):
                     raise result
+                if result is DEFAULT:
+                    result = self.return_value
                 return result
 
             ret_val = effect(*args, **kwargs)
index 2c6f12897582d2b461259619c86f3904567efd7e..3d0776c16fbca1f13202c5b674305ff9f4dcd7dc 100644 (file)
@@ -906,6 +906,10 @@ class MockTest(unittest.TestCase):
         self.assertRaises(StopIteration, mock)
         self.assertIs(mock.side_effect, this_iter)
 
+    def test_side_effect_iterator_default(self):
+        mock = Mock(return_value=2)
+        mock.side_effect = iter([1, DEFAULT])
+        self.assertEqual([mock(), mock()], [1, 2])
 
     def test_assert_has_calls_any_order(self):
         mock = Mock()