У меня есть блок try catch, и я хочу перехватить основную функцию, вызываемую для возврата исключения с сообщением ->
def some_func():
try:
my_function()
except Exception as e:
if e.message == 'XYZ':
# do stuff
return
raise
Я пытаюсь проверить это, но мой тест продолжает подниматьвместо исключения:
@mock.patch('import_path_for_my_function')
def test_some_func(self, mock_my_func):
mock_my_func.side_effect = mock.Mock(side_effect=Exception('XYZ'))
some_func()
# do some assertions
но похоже, что вместо этого возникает исключение:
File "/usr/local/lib/python3.7/unittest/mock.py", line 960, in __call__
return _mock_self._mock_call(*args, **kwargs)
File "/usr/local/lib/python3.7/unittest/mock.py", line 1026, in _mock_call
result = effect(*args, **kwargs)
File "/usr/local/lib/python3.7/unittest/mock.py", line 960, in __call__
return _mock_self._mock_call(*args, **kwargs)
File "/usr/local/lib/python3.7/unittest/mock.py", line 1020, in _mock_call
raise effect
Exception: XYZ
Почему это происходит, и как мне перехватить my_function
, чтобы вызвать исключение, которое может бытьпойман методом, вызывающим его.