【发布时间】:2019-12-31 12:39:44
【问题描述】:
我是 Django REST 框架的新手,我正在尝试使用 Token 为我的 API 进行单元测试,但它一直抛出 IntegrityError。我研究了许多博客以找到解决方案,但找不到。请帮我解决这个问题。提前致谢。
这是我尝试过的代码
from django.contrib.auth.models import User
from rest_framework.test import APITestCase, APIRequestFactory, force_authenticate
from rest_framework.authtoken.models import Token
from myapp.api.views import UserViewSet
class UserTestCase(APITestCase):
def setUp(self):
self.superuser = User.objects.create_user(username='superuser', email='uid.sawyer@gmail.com',
password='superuser',
is_staff=True)
self.factory = APIRequestFactory()
self.token = Token.objects.create(user=self.superuser)
self.token.save()
def test_list(self):
request = self.factory.get('/api/users/')
force_authenticate(request, user=self.superuser, token=self.token)
response = UserViewSet.as_view({'get': 'list'})(request)
self.assertEqual(response.status_code, 200)
【问题讨论】:
-
您的
Token.objects.create(..)似乎多次插入相同的user -
这个错误到底发生在哪一行?如果您不知道,请显示整个错误跟踪。
-
在创建令牌
Token.objects.create(user=self.superuser)时,我尝试删除self.token.save(),我也尝试将令牌创建代码放入setUpClass()类方法中,但它仍然抛出IntegrityError跨度>
标签: django unit-testing django-rest-framework http-token-authentication