【发布时间】:2015-08-12 15:56:54
【问题描述】:
是否可以在模拟模块时访问“真实”对象?我正在尝试做的是模拟一些功能,但抛出“真正的”异常,如下所示:
@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。
是否有可能访问/抛出“真正的”异常?
【问题讨论】:
标签: python mocking python-mock