面试题答案
一键面试import unittest
from unittest.mock import patch
import your_module # 导入包含依赖API函数的模块
# 假设这是依赖API的函数
def your_function_that_calls_api():
# 这里是实际调用API的代码,现在先省略
pass
class TestYourFunction(unittest.TestCase):
@patch('your_module.your_function_that_calls_api')
def test_api_success(self, mock_api_call):
mock_response = {'key': 'value'}
mock_api_call.return_value = mock_response
result = your_function_that_calls_api()
self.assertEqual(result, mock_response)
@patch('your_module.your_function_that_calls_api')
def test_api_failure(self, mock_api_call):
mock_api_call.side_effect = Exception('API call failed')
with self.assertRaises(Exception):
your_function_that_calls_api()
if __name__ == '__main__':
unittest.main()
上述代码解释:
- 导入必要的模块,
unittest
用于编写单元测试,patch
用于创建模拟对象。 - 假设
your_function_that_calls_api
是依赖API的函数,由于实际代码中调用API部分省略,这里只做占位。 TestYourFunction
类继承自unittest.TestCase
,用于编写测试用例。test_api_success
测试用例中,使用patch
模拟your_function_that_calls_api
函数,并设置返回值为一个模拟的成功响应,然后断言函数返回值与模拟响应一致。test_api_failure
测试用例中,使用side_effect
设置模拟函数抛出异常,模拟API调用失败的情况,使用assertRaises
断言函数调用会抛出异常。