gpt4 book ai didi

django - 如何在 django rest 框架中传递用户 token 进行 API 测试?

转载 作者:行者123 更新时间:2023-12-02 00:52:26 24 4
gpt4 key购买 nike

我正在编写一些测试来检查与我的 API 的连接。

我已经通过 token 进行了识别,并且成功地为特定测试用户检索了 token :

token = Token.objects.get(user__username='testuser')

我正在努力的是使用该 token 创建一个成功的 API 请求,如下所示:
client = APIClient(HTTP_AUTHORIZATION='Token ' + token.key)
response = client.get('/patientFull/1/',headers={'Authorization': 'Token ' + token.key})

我一直在寻找许多方法来完成这项工作,这些是我尝试过的一些方法:
response = requests.get('http://127.0.0.1:8000/patientFull/1/',headers={'Authorization': 'Token ' + token.key} )


client = APIClient()
client.credentials(HTTP_AUTHORIZATION='Token ' + token.key)
response = client.get('/patientFull/1/')

该测试是一个简单的断言来检查响应是否有来自服务器的 200 OK HTTP 应答。

以上所有这些方式都会返回 403 HTTP 响应。

这是我的测试的完整代码(我使用夹具用测试数据填充我的测试数据库):
import json
import requests
from rest_framework.authtoken.models import Token
from rest_framework.test import APIRequestFactory, APITestCase, APIClient


class CustomerAPITestBack(APITestCase):
fixtures = ['new-fixtures.json']

def testDE(self):
token = Token.objects.get(user__username='jpmichel')
client = APIClient(HTTP_AUTHORIZATION='Token ' + token.key)
response = client.get('/patientFull/1/',headers={'Authorization': 'Token ' + token.key})
self.assertEqual(200, response.status_code)

我已经为 token 配置了我的 settings.py 文件:
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.BasicAuthentication',
'rest_framework.authentication.SessionAuthentication',
'PHCAdmin.authentication.tokenAuthentication.ExpiringTokenAuthentication',
),
'EXCEPTION_HANDLER': 'PHCAdmin.functions.pxlth_exception_handler',
}

REST_FRAMEWORK_EXPIRY_TIME = 12 # in hours
REST_FRAMEWORK_PASSWORD_RENEWALS = 90 # in days

如果我禁用 token 身份验证,则此测试通过(GET 返回 200 OK)

我应该如何执行我的 GET 请求,以便它使用 token 识别为有效用户并返回 200 OK HTTP 响应?

最佳答案

只是为了结束这个问题:
经过一番研究,我发现服务器上的 token 与本地机器上的 token 不同,我只需要更新双方的 token 。
上面的代码工作正常。

关于django - 如何在 django rest 框架中传递用户 token 进行 API 测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56582272/

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