我想嘲笑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}$在上述基于SNView类的视图中对“auth social”的post调用期间创建了VKAuth类的实例:
class SNView(generics.GenericAPIView):
serializer_class = serializers.AuthSocialSerializer
permission_classes = (rest_permissions.IsAuthenticated)
def post(self, request, backend, *args, **kwargs):
s = self.get_serializer(data=request.DATA)
if s.is_valid():
auth_backends = {
'vk': VKAuth,
'facebook': FBAuth
}
if backend in auth_backends:
auth_backend = auth_backends[backend](access_token=s.data['access_token'], user=self.request.user)
我得到一个错误:
AttributeError: <class 'accounts.auth_backends.vk_backend.VKAuth' doens't have the attribute 'api'
我应该写什么面片.object达到api.friends.get嘲笑它?
升级版:
更准确地说,我想要一些等价物:
auth_token = 'ceeecdfe0eb4bf68ceeecdfe0eb4bf68ceeecdfe0eb4bf68652530774ced6cbc8cba0'
user = User.objects.get(id = 2)
vk_auth = VKAuth(auth_token, user)
vk_ids=[111111,2222222,3333333,44444444]
vk_auth.authenticate()
vk_auth.api.friends = MagicMock(name='get', return_value=None)
vk_auth.api.friends.get = MagicMock(name='get', return_value=vk_ids)
data = vk_auth.follow()
但是在我们通过self.client.post(). 在
谢谢你!在
你在修补错误的东西。在
VKAuth
中:将
^{pr2}$api
属性添加到VKAuth
self
对象。当你打电话的时候您正在修补
VKAuth
类的api
静态属性,而不是object属性。在您应该改为修补
vk.API
。在注意事项:
patch
。在autospec=True
不是必需的,而是I strongly encourage to use it。在patch
上下文中,self.api
将等于mock_api.return_value
,因为调用vk.API(self.session)
与调用{mock_api
是用来替换{现在,如果您想通过某种行为填充
mock_api.return_value
,可以在with
上下文中配置它:相关问题 更多 >
编程相关推荐