Chr*_*son 5 python unit-testing django-rest-framework bearer-token
我正在为需要承载令牌身份验证的端点编写测试,但是我在尝试将身份验证错误传递给 HTTP 方法时遇到错误,例如 client.post(url,data,**auth_header)
我一直在使用这两种尝试client.login(username=username,password=pass)和client.force_login(user=Users.objects.get(username='admin'))再client.post(url,data)
我也试过:client.post(url,data,**{'HTTP_AUTHORIZATION': 'Bearer {}'.format(token)}),client.post(url,data,HTTP_AUTHORIZATION='Bearer {}'.format(token))这两个输出堆栈跟踪
我也尝试使用AUTHORIZATION,Authorization作为密钥,但如果您不进行身份验证,我会收到端点发送的权限错误。
from django.test import TestCase
from django.test import Client
from django.contrib.auth.models import User
login = client.post('/api/users/login/',{'username':username,'password': password})
bearer = {'HTTP_AUTHORIZATION':'Bearer {}'.format(login.json()['access'])}
response = client.post(url, {'key':'value'}, **bearer)
Run Code Online (Sandbox Code Playgroud)
我期待来自响应变量的 json 响应和 200 的 status_code 相反,如果您未通过身份验证,我将获得堆栈跟踪或从端点返回的错误。
以下对我有用:
token = 'your_token'
data = {"key": "value"}
r = client.post(self.ADD_COUPON_URL, data = data, format = 'json',
**{'HTTP_AUTHORIZATION': f'Bearer {token}'},follow = True)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2167 次 |
| 最近记录: |