fir*_*ost 6 django django-testing django-rest-framework
我正在编写一些测试来检查与我的 API 的连接。
我已经通过令牌进行了身份识别,并且成功地通过以下方式检索了特定测试用户的令牌:
token = Token.objects.get(user__username='testuser')
Run Code Online (Sandbox Code Playgroud)
我正在努力解决的是使用该令牌创建一个成功的 API 请求,如下所示:
client = APIClient(HTTP_AUTHORIZATION='Token ' + token.key)
response = client.get('/patientFull/1/',headers={'Authorization': 'Token ' + token.key})
Run Code Online (Sandbox Code Playgroud)
我一直在寻找多种方法来实现这项工作,以下是我尝试过的一些方法:
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/')
Run Code Online (Sandbox Code Playgroud)
该测试是一个简单的断言,用于检查响应是否有来自服务器的 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)
Run Code Online (Sandbox Code Playgroud)
我已经为令牌配置了 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
Run Code Online (Sandbox Code Playgroud)
如果我禁用令牌身份验证,则此测试通过(GET 返回 200 OK)
我应该如何执行 GET 请求,以便它使用令牌来识别有效用户并返回 200 OK HTTP 响应?
| 归档时间: |
|
| 查看次数: |
4953 次 |
| 最近记录: |