如何在Django中模拟外部api?

2024-05-19 10:29:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我想嘲笑self.api.朋友.get“VKAuth类中的方法:

import vk

class VKAuth(object):
    def __init__(self, access_token, user):
        self.session = vk.Session(access_token = access_token)
        self.api = vk.API(self.session)

    def follow(self):
        vk_friends = self.api.friends.get()

从测试模块测试_视图.py公司名称:

^{pr2}$

我在测试过程中发现了一个错误:

AttributeError: <class 'accounts.auth_backends.vk_backend.VKAuth' doens't have the attribute 'api'

我做错什么了?如何在这个类结构中访问这个方法?在


Tags: 方法importselftokenapigetobjectaccess
1条回答
网友
1楼 · 发布于 2024-05-19 10:29:31

你试图模仿一个类本身,而不是它的实例。而且该类没有api属性,因为它是在您的__init__()中创建的。将代码更改为:

def test_auth_vk(self, mock_get):
    vk_auth = VKAuth(access_token, user)
    with mock.patch('vk_auth.api.friends') as friends_mock:
        friends_mock.get.return_value = None
        # Invoke the code that calls your api, passing the "vk_auth" variable as a backend.
        # ...
        friends_mock.mock.get.assert_called_with(your_arguments)

如果不能直接将auth后端传递给代码,请查找实例化它的位置并模拟该位置。在

相关问题 更多 >

    热门问题