Django DRF视图集测试方法

Django DRF视图集测试方法,django,django-rest-framework,pytest,Django,Django Rest Framework,Pytest,我已将一个方法添加到我的viewset中,如下所示: class CustomImageViewSet(viewsets.ModelViewSet): queryset = CustomImage.objects.all() serializer_class = CustomImageSerializer lookup_field = 'id' @action(detail=True, methods=['get'], url_path='sepia/')

我已将一个方法添加到我的viewset中,如下所示:

class CustomImageViewSet(viewsets.ModelViewSet):
    queryset = CustomImage.objects.all()
    serializer_class = CustomImageSerializer
    lookup_field = 'id'

    @action(detail=True, methods=['get'], url_path='sepia/')
    def sepia(self, request, id):
        # do something
        data = image_to_string(image)
        return HttpResponse(data, content_type="image/png", status=status.HTTP_200_OK)

由于它不是默认的或重写的请求方法,我不确定如何继续为它编写测试。有什么建议吗?

您不清楚测试应该测试什么,但您可以测试响应状态代码,例如:

def test_sepia_api():
    api_client = APIClient()
    response = api_client.get(path="{path_to_your_api}/sepia/")
    assert response.status_code == 200

您不清楚测试应该测试什么,但您可以测试响应状态代码,例如:

def test_sepia_api():
    api_client = APIClient()
    response = api_client.get(path="{path_to_your_api}/sepia/")
    assert response.status_code == 200

我注意到你在用pytest。我假设你也有pytest django(它确实让一切变得更容易)。我喜欢使用请求工厂,因为如果您有身份验证需求,它通常会更快

def测试(自身、用户、射频):
视图=CustomImageViewSet()
请求=rf.get(“”)
request.user=user#如果需要身份验证
view.request=请求
响应=视图.sepia(请求,123)
assert response.data==BLAH

我注意到您正在使用pytest。我假设你也有pytest django(它确实让一切变得更容易)。我喜欢使用请求工厂,因为如果您有身份验证需求,它通常会更快

def测试(自身、用户、射频):
视图=CustomImageViewSet()
请求=rf.get(“”)
request.user=user#如果需要身份验证
view.request=请求
响应=视图.sepia(请求,123)
assert response.data==BLAH