def _execute_mock_call()

in later/unittest/backport/mock.py [0:0]


    def _execute_mock_call(self, *args, **kwargs):
        # separate from _increment_mock_call so that awaited functions are
        # executed separately from their call

        effect = self.side_effect
        if effect is not None:
            if _is_exception(effect):
                raise effect
            elif not _callable(effect):
                result = next(effect)
                if _is_exception(result):
                    raise result
            else:
                result = effect(*args, **kwargs)

            if result is not DEFAULT:
                return result

        if self._mock_return_value is not DEFAULT:
            return self.return_value

        if self._mock_wraps is not None:
            return self._mock_wraps(*args, **kwargs)

        return self.return_value