异常不陷入尝试 - 除了单元测试

问题描述:

期间块我有这个在我的代码:异常不陷入尝试 - 除了单元测试

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的实例。

我刚用了一个小时把我的头撞在桌子上,希望这可以帮助别人。