Возможно ли доступ к «реальным» объектам, издеваясь над модулем? То, что я пытаюсь сделать, это насмешка некоторых функций, но бросить «реальное» исключение, как это:Python макет доступа к «реальным» объектам, в то время как насмехается над модулем
@mock.patch('my_project.requests')
def test_foo(self, mock_requests):
mock_requests.post = mock.Mock(side_effect=requests.ConnectionError())
thread = CommandThread("command", 3, 2, 0)
thread.run() #this is were I exercise requests.post
self.assert(thread.was_successful is False)
Внутри моей CommandThread у меня есть чек, как
try:
requests.post(url, data=data)
except (requests.ConnectionError, requests.Timeout):
self.was_successful = False
однако, мой тест не потому, что исключение не попало в блок try/except (когда мне нравится except Exception:
). Причина, я думаю, просто потому, что я издевался над этим «пространством имен» в своем тестовом примере, поэтому я фактически делаю исключение вместо my_project.requests.ConnectionError
, requests.ConnectionError
из оригинальной упаковки. Как можно получить доступ к «реальным» исключениям?