测试Post API接收状态码200而不是201

时间:2019-03-10 20:59:51

标签: python django unit-testing django-rest-framework

我的post方法API的测试收到状态码200,但是应该201我试图找出问题所在,但我没有。如果我将收到错误状态4xx,但我不知道为什么post方法为什么可以接收代码200,这会更容易。我的API视图工作正常,因此这一定是测试代码存在的问题,但是我真的不知道可能导致此问题的原因。也许我错了,状态码200可以,但是我认为post方法应该收到状态201。

test_api.py

class CreateComment(APIView):

def get_object(self, id):
    try:
        return Product.objects.get(id=id)
    except Product.DoesNotExist:
        raise Http404

def get(self,request,  id):
    product = self.get_object(id)
    serializer = ProductSerializer(product)
    return Response(serializer.data)

def post(self, request,id):
    serializer = CommentSerializer(data=request.data)
    if serializer.is_valid():
        serializer.save(nick=request.user, product=self.get_object(id))
        return Response(serializer.data)
    return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

views.py

import { Subscription } from 'rxjs/Subscription';
import { Observable } from 'rxjs/Observable';

1 个答案:

答案 0 :(得分:2)

在您的post()中,如果成功,您需要返回status.HTTP_201_CREATED

尝试一下:

def post(self, request,id):
    serializer = CommentSerializer(data=request.data)
    if serializer.is_valid():
        serializer.save(nick=request.user, product=self.get_object(id))
        return Response(serializer.data, status=status.HTTP_201_CREATED)
    return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)