模拟成员对象进行的外部API调用(Python单元测试)

我正在努力为涉及外部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.

评论