我有以下代码,希望在给定函数引发“FileNotFoundError”时取消测试

def get_token():
try:
    auth = get_auth() # This function returns auth ,if file exists else throws "FileNotFoundError
except FileNotFoundError:
    auth= create_auth()
return auth

我很难弄清楚如何测试它引发“filenotfounderror”并且不调用create-auth的条件。
任何暗示都将不胜感激
谢谢

最佳答案

在单元测试中,您需要模拟get_auth函数,并使用FileNotFoundError属性使其引发.side_effect

@mock.patch('path.to.my.file.get_auth')
def test_my_test(self, mock_get_auth):
    mock_get_auth.side_effect = FileNotFoundError

然后,您可以测试是否实际调用了create_auth
@mock.patch('path.to.my.file.create_auth')
@mock.patch('path.to.my.file.get_auth')
def test_my_test(self, mock_get_auth, mock_create_auth):
    mock_get_auth.side_effect = FileNotFoundError
    get_token()
    self.assertTrue(mock_create_auth.called)

08-07 13:58