Ignacio Rossi added the comment: The problem only affects autospecced functions.
Apparently, the problem lies here (all code excerpts from Lib/unittest/mock.py): - When autospeccing functions, the Mock._mock_delegate field is populated at the end of _setup_func (and its the only place I found where the delegate is set): 197 def _setup_func(funcopy, mock): [...] 237 mock._mock_delegate = funcopy - Mock.side_effect is a property, and proxies the get/set to _mock_delegate when it exists, and on the way out does not detect the exception and tries to make an _IterMock out of it and everything explodes. 504 def __get_side_effect(self): 505 delegated = self._mock_delegate 506 if delegated is None: 507 return self._mock_side_effect 508 sf = delegated.side_effect 509 if sf is not None and not callable(sf) and not isinstance(sf, _MockIter): 510 sf = _MockIter(sf) I've attached a patch which adds a test for this use case, and a proposed fix. Hope it helps :) ---------- keywords: +patch Added file: http://bugs.python.org/file38479/autospec_exception.patch _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue23661> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com