我正在努力为涉及外部API调用的功能编写单元测试。我来自C语言背景,只是在学习python,所以请裸身。我在网上遇到的大多数示例都在模仿非常简单的示例方法,并且有大量不同的库和语法,而且每个人的处理方式似乎都略有不同,所以我很困惑。
假设我有MyClass,并且正在尝试为get_id编写单元测试:
class MyClass
def __init__(self):
self.SomeService = SomeService(...)
...
def get_id(self, name):
try:
response = self.SomeService.get_id(name) #makes a GET request to some API and returns a json object of the response body
return response["id"]
except SomeException as E:
self.send_error_alert('error')
sys.exit(1)
这是我正在尝试的:
@patch('someservice.requests.get')
def test_1(self, mock_get):
fakename = 'fakename'
mock_get.return_value.status_code = 500
self.Automation.get_id(fakename)
self.assertRaises(SomeException, Automation.get_id)
但是我的代码仍在进行外部API调用,而不是返回模拟值(我看到403响应)。
I've also tried @patch('myclass.requests.get')
instead of someservice
, no dice there either. Thanks in advance for any help.