diff -r f349e03bb41f Lib/unittest/mock.py --- a/Lib/unittest/mock.py Tue Mar 05 01:37:02 2013 -0500 +++ b/Lib/unittest/mock.py Sun Apr 07 15:43:31 2013 +0300 @@ -931,6 +931,8 @@ result = next(effect) if _is_exception(result): raise result + if result is DEFAULT: + result = self.return_value return result ret_val = effect(*args, **kwargs) diff -r f349e03bb41f Lib/unittest/test/testmock/testmock.py --- a/Lib/unittest/test/testmock/testmock.py Tue Mar 05 01:37:02 2013 -0500 +++ b/Lib/unittest/test/testmock/testmock.py Sun Apr 07 15:43:31 2013 +0300 @@ -978,6 +978,10 @@ 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()