使用凭据和djo测试Djangoapi登录

2024-06-08 13:31:45 发布

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

我目前正在尝试使用Django测试API的端点。到目前为止,我已经使用了APITestCase,但是在登录和使用我的令牌时遇到了一些问题。在

我有一个密码为('1')的Clark用户,在发送请求之前,我登录他,检索他的令牌并将其添加到头中。但我还是个错误。在

    connection_data = {'email':self.clark_user.email, 'password': '1'}
    self.client.login(email=self.clark_user.email, password='1')     

    token = self.client.post(settings.SERVER_HOST+'/api/v1/auth/login', connection_data)
    self.client.credentials(HTTP_AUTHORIZATION='Token ' + token.data['auth_token'])

    response = self.client.patch(self.url_people, serializer.data, format='json')
    self.assertEqual(response.status_code, status.HTTP_200_OK)
    self.client.logout()

我的堆栈如下:

以及

  • 从静止状态_框架.测试导入APITestCase
  • 从核心测试实用程序为我的测试导入BaseTest。在

是我用来测试的库。在


Tags: djangoselfclienttokenauthapihttpdata
1条回答
网友
1楼 · 发布于 2024-06-08 13:31:45

Django-REST框架有一个APIClient类,用于此目的。我认为与其通过http获取Token,不如直接从数据库中取出。代码看起来像

from rest_framework.authtoken.models import Token
from rest_framework.test import APIClient

# Include an appropriate `Authorization:` header on all requests.
token = Token.objects.get(user__username=self.clark_user.username)
client = APIClient()
client.credentials(HTTP_AUTHORIZATION='Token ' + token.key)

response = client.patch(self.url_people, serializer.data, format='json')
self.assertEqual(response.status_code, status.HTTP_200_OK)
client.logout()

文档可以在Testing Page找到。在

相关问题 更多 >