【发布时间】:2019-06-16 13:21:47
【问题描述】:
我正在为我的 API 编写测试。现在我想测试 post 方法。
这是我的views.py:
class TaskViewSet(viewsets.ModelViewSet):
queryset = Task.objects.all()
serializer_class = serializers.TaskSerializer
authentication_classes = (BasicAuthentication,)
permission_classes = (permissions.IsAuthenticated, permissions.IsAdminUser)
这是我的tests.py:
class UserFactory(DjangoModelFactory):
class Meta:
model = User
username = 'dima'
password = 'moonmvm2k14'
email = 'admin@admin.com'
is_superuser = True
is_active = True
is_staff = True
class TaskFactory(DjangoModelFactory):
class Meta:
model = Task
title = "TASK N1"
description = "smth"
person = factory.SubFactory(UserFactory)
deadline = date.today()
class ViewTest(APITestCase):
def setUp(self):
self.task = TaskFactory()
self.username = 'myuser'
self.password = 'test'
self.email = 'admin@mgmail.com'
self.admin = User.objects.create_superuser(self.username, self.password, self.email)
self.client = APIClient()
self.client.login(username=self.admin.username, password=self.admin.password)
def test_post_task(self):
url = '/task-list/'
json_tasks = serializers.TaskSerializer(self.task)
data = json_tasks.data
response = self.client.post(url, data)
tasks_count = Task.objects.count()
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
self.assertEqual(tasks_count, 2)
但是当我尝试测试它时,我看到了这个错误:
AssertionError: 401 != 201
我不知道为什么我的测试失败并显示未授权状态代码。
那么,问题出在哪里,我该如何解决?
【问题讨论】:
-
/task-list/URL 似乎给了你 HTTP 401,你能打印出响应正文并将其添加到问题中吗? -
需要打印
response.body才能获取正文字符串 -
'Response' 对象没有属性 'body' 如果你想查看 response.data,请购买,这里是:'detail': ErrorDetail(string='Authentica[59 chars]ed')跨度>
标签: django python-3.x django-rest-framework factory-boy