在 Django 测试客户端中验证请求

问题描述 投票:0回答:2

当我使用

Postman
(服务器正在运行)测试时,我的 API 可以正常工作。例如:

当我使用 Django 测试客户端进行测试时,我可以登录,但无法验证请求。例如:

headers = {'Authorization': 'Token ' + token}
response = client.get('/api/v1/users/auth/user/', **headers)

响应对象包含:

'_container': [b'{"detail":"Authentication credentials were not provided."}']

由于某种原因,令牌最终出现在

request
中,而不是标头中:

'request': {'Authorization': 'Token 665c371b1b894abba102cdbae8b35b613321791d',

我错过了什么?

django django-rest-framework authorization django-testing
2个回答
1
投票

最后我找到了有效的方法:

response = client.get('/api/v1/users/auth/user/', 
                      **{ "HTTP_AUTHORIZATION": f"Token {token}" })

0
投票

Copilot 建议我使用 HTTP_AUTHORIZATION=auth_token 并且它有效。

auth_token 已包含“令牌”

response = self.client.post(path= SALES_API + "/restaurants/", data=body, content_type="application/json", HTTP_AUTHORIZATION=auth_token)

© www.soinside.com 2019 - 2024. All rights reserved.