我有简单的视图测试。我想简单测试'/users/',但我的应用程序需要用户登录的问题。这在这里解释
Django Unittests客户端登录:在测试套件中失败,但在Shell中没有
login_ret = self._client.login(username=self._username,
password=self._password)
它按预期工作。因此,我按照此处的说明创建了测试用户,并且它可以正确登录。现在,我想用这段代码从'/user/'得到响应
ret = self._client.get('/users/')
而这个回报
状态码:403
content: {"detail": "您无权执行此操作。"}
它接缝它不保留来自登录方法的会话。
这里有什么问题?
这是完整的代码
self._client = Client()
self._username = 'testuser'
self._email = 'test@test.com'
self._password = 'test'
self._test_user = User.objects.create_user(self._username,
self._email,
self._password)
login_ret = self.client.login(username=self._username,
password=self._password)
self.assertEqual(login_ret, True)
我刚刚创建了基本的 Django REST API 应用程序并添加了 auth 模块,所以完整的视图代码是这样的(rest_api 是应用程序的名称)
from django.contrib.auth.models import User, Group
from rest_framework import viewsets
from rest_api.serializers import UserSerializer, GroupSerializer
class UserViewSet(viewsets.ModelViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer
class GroupViewSet(viewsets.ModelViewSet):
queryset = Group.objects.all()
serializer_class = GroupSerializer
序列化程序.py
from django.contrib.auth.models import User, Group
from rest_framework import serializers
class UserSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = User
fields = ('url', 'username', 'email', 'groups')
class GroupSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Group
fields = ('url', 'name')
模型.py 是空的