簡體   English   中英

使用憑據和djoser測試Django API登錄

[英]Testing Django API login using credentials and djoser

我目前正在嘗試使用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()

我的堆棧如下:

  • 從rest_framework.test導入APITestCase
  • 從core.test_utils導入BaseTest用於我的測試。

是我用於測試的庫。

Django REST框架具有用於實現此目的的APIClient類。 我認為與其通過HTTP獲得Token ,還可以直接從DB中撤出。 代碼看起來像

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

可以在“ 測試頁面”中找到文檔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM