我目前正在尝试使用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()
我的筹码如下:
并且
我用的是我的测试。
答案 0 :(得分:1)
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找到文档。