覆盖率显示测试 get_serializer_class 为未测试
Coverage show test get_serializer_class as untested
使用覆盖率显示测试 drf 视图必须覆盖的内容。并且覆盖显示所有视图都测试正常(由 unittest + dango 客户端覆盖 API)
但是覆盖率显示这部分需要覆盖:
def get_serializer_class(self):
return self.serializer_class `
我认为该代码可以删除,因为它没用(这不是我的代码):)
知道如何在 GenericAPIView
中覆盖过去的代码吗?感谢您的帮助
有两种指定序列化程序的方法class:
- 第一种方法是在 class 中设置
serializer_class
属性。
- 第二种方法是覆盖
get_serializer_class()
方法。
如果您已经在 class 中添加了 serializer_class
属性(第一种方法),那么 get_serializer_class()
肯定没用。
这是例子:
from django.contrib.auth.models import User
from myapp.serializers import UserSerializer
from rest_framework import generics
class UserList(generics.GenericAPIView):
queryset = User.objects.all()
serializer_class = UserSerializer
在大多数情况下,您应该使用第一种方法,因为通常您的 API 视图只需要一个序列化程序。第二种方法对动态行为很有用,例如使用不同的序列化程序进行读写操作,或者为不同类型的用户提供不同的序列化程序。
示例:
def get_serializer_class(self):
if self.request.user.is_staff:
return StaffSerializer
return BasicSerializer
使用覆盖率显示测试 drf 视图必须覆盖的内容。并且覆盖显示所有视图都测试正常(由 unittest + dango 客户端覆盖 API)
但是覆盖率显示这部分需要覆盖:
def get_serializer_class(self):
return self.serializer_class `
我认为该代码可以删除,因为它没用(这不是我的代码):)
知道如何在 GenericAPIView
中覆盖过去的代码吗?感谢您的帮助
有两种指定序列化程序的方法class:
- 第一种方法是在 class 中设置
serializer_class
属性。 - 第二种方法是覆盖
get_serializer_class()
方法。
如果您已经在 class 中添加了 serializer_class
属性(第一种方法),那么 get_serializer_class()
肯定没用。
这是例子:
from django.contrib.auth.models import User
from myapp.serializers import UserSerializer
from rest_framework import generics
class UserList(generics.GenericAPIView):
queryset = User.objects.all()
serializer_class = UserSerializer
在大多数情况下,您应该使用第一种方法,因为通常您的 API 视图只需要一个序列化程序。第二种方法对动态行为很有用,例如使用不同的序列化程序进行读写操作,或者为不同类型的用户提供不同的序列化程序。
示例:
def get_serializer_class(self):
if self.request.user.is_staff:
return StaffSerializer
return BasicSerializer