我有以下代码,希望在给定函数引发“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)