异常不陷入尝试 - 除了单元测试
问题描述:
期间块我有这个在我的代码:异常不陷入尝试 - 除了单元测试
import api
def do_something():
try:
api = api.Api()
api.call()
except ParseException as e:
logger.exception('Error occurred')
raise ValidationError(detail=e.message)
基本上它调用API,并重新提出了与其他类型的异常。 我的测试检查时,抛出异常的情况:
@patch('code.api')
def test_exception(self, api_mock):
api_mock.Api.side_effect = ParseException('General Error')
self.assertRaises(
ValidationError,
do_something
)
api_mock.Api.assert_called_once()
但是因为ParseException
被抛出,而不是ValidationError
我的测试失败。到底是怎么回事?
答
注意@patch('code.api')
一行。这说明code.api
中的所有补丁。 ParseException
也可能在api
模块中,因此也进行了修补。如果你调试你的代码,你会看到type(ParseException)
不是一个Exception的实例,而是一个MagicMock
的实例。
我刚用了一个小时把我的头撞在桌子上,希望这可以帮助别人。