gpt4 book ai didi

python - 如何在 django 中模拟外部 api?

转载 作者:行者123 更新时间:2023-12-01 04:12:15 26 4
gpt4 key购买 nike

我正在尝试模拟 VKAuth 类中的“self.api.friends.get”方法:

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()

来自测试模块test_views.py:

from mock import patch
from ..auth_backends.vk_backend import VKAuth

class AddUsersToList(TestCase):
@patch.object(VKAuth.api.friends, 'get')
def test_auth_vk(self, mock_get):
... etc ...

我在测试过程中遇到错误:

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

我做错了什么?如何访问该类结构中的该方法?

最佳答案

您试图模拟类本身,而不是它的实例。并且该类没有 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)

如果您不能只将身份验证后端传递给代码,请查找实例化它的位置并模拟该位置。

关于python - 如何在 django 中模拟外部 api?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34767720/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com