【发布时间】:2020-08-26 09:03:28
【问题描述】:
我是 Django 和 Django Rest Framework 的新手。
我想知道如何测试自定义操作。例如,假设我们有以下 DRF 教程中的代码
class UserViewSet(viewsets.ModelViewSet):
"""
A viewset that provides the standard actions
"""
queryset = User.objects.all()
serializer_class = UserSerializer
@action(detail=True, methods=['post', 'put'])
def set_password(self, request, pk=None):
user = self.get_object()
serializer = PasswordSerializer(data=request.data)
if serializer.is_valid():
user.set_password(serializer.data['password'])
user.save()
return Response({'status': 'password set'})
else:
return Response(serializer.errors,
status=status.HTTP_400_BAD_REQUEST)
我将如何在 DRF 的测试中调用此视图。
def test_password_set(self):
user = User.objects.create(name="Joe")
factory = APIRequestFactory()
request_url = f'users/{user.id}/set_password/'
request = factory.post(request_url)
view = UserViewSet.as_view({'put': 'update'})
response = view(request)
self.assertEqual(response.status_code, 200)
该代码给了我下面的错误
AssertionError: 405 != 200
这意味着给定的方法是不允许的。
谁能帮我弄清楚错误可能是什么?
【问题讨论】:
标签: django django-rest-framework