如何在django.test.Client中将身份验证承载令牌传递给HTTP方法?

时间:2019-01-17 18:55:58

标签: 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))都输出堆栈跟踪

我还尝试使用AUTHORIZATIONAuthorization作为密钥,但是如果您不进行身份验证,则会收到端点发送的权限错误。

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)

我期望响应var的json响应和status_code为200,而不是我正在获取堆栈跟踪或如果未通过身份验证则从端点返回的错误。

0 个答案:

没有答案