У меня есть функция в классе под названием «my_class» в модуле, который называется «my_module», который содержит этот фрагмент:Исключение не вызывается при использовании side_effect с притворным
try:
response = self.make_request_response(requests.post, data, endpoint_path)
except requests.exceptions.HTTPError as err:
if err.response.status_code == requests.codes.conflict:
logging.info('Conflict error')
И я пытаюсь проверить это как так:
error = requests.exceptions.HTTPError(mock.Mock(response=mock.Mock(status_code=409)), 'not found')
mock_bad = mock.Mock(side_effect=error)
mock_good = mock.Mock()
mock_good.return_value = [{'name': 'foo', 'id': 1}]
upsert = my_module.my_class(some_data)
with mock.patch.object(upsert, 'make_request_response', side_effect=[mock_bad, mock_good]) as mock_response:
some_function()
Что бы я ожидал, это связано с тем, что HTTPError будет поднят в тесте после того, как я его исправлю. Однако, когда я запускаю тест, исключение никогда не возникает. «Ответ» на самом деле установлен в mock_bad, который содержит желаемое исключение, хотя он никогда не поднимается. Любая идея, где я ошибаюсь?