来自测试用例的Django-api更新/创建请求从未在序列化程序中触发相关方法



如何从测试用例中发送UPDATE或CREATE请求?当我运行测试用例时,创建/更新方法从未在序列化程序中启动。。Django哲学中我误解了什么?有人能建议我该做什么吗?

例如:

#View
class  filesPairView (viewsets.ModelViewSet):
serializer_class = filesPairViewSerializer

def create(self, request):
...
return Response(status=status.HTTP_201_CREATED)

#Serializer
class filesPairViewSerializer(serializers.ModelSerializer):
class Meta:
...

def create(self, validated_data):
print ("filesPairViewSerializer CREATE")

def update(self, validated_data):
print ("filesPairViewSerializer UPDATE")


#Test case
class filesPairViewTestCase(APITestCase):
def test_barmi(self):
print("test_barmi")
url = ('http://127.0.0.1:8000/api/filesPairView/')
data ={
#some valid data
}
response = self.client.post(url, data)
self.assertEqual(response.status_code, status.HTTP_201_CREATED)

#urls
router.register(r'filesPairView', views.filesPairView )

执行以下操作:

#Test case
from django.urls import reverse
class filesPairViewTestCase(APITestCase):
def test_barmi(self):
print("test_barmi")
url = reverse('filespairview-list')
data ={
#some valid data
}
response = self.client.post(url, data)
self.assertEqual(response.status_code, status.HTTP_201_CREATED)

#urls
router.register(r'filesPairView', views.filesPairView, basename='filespairview')

注意,这里的技巧是使用basename,它通常是单数,并且基于REST具有以下结果:

  • reverse('filespairview-list')->/filesPairView/-GET-列出所有
  • reverse('filespairview-list')->/filesPairView/-POST-创建
  • reverse('filespairview-detail')->/filesPairView/{int:pk}/-GET-获取一个
  • reverse('filespairview-detail')->/filesPairView/{int:pk}/-POST-更新一个
  • reverse('filespairview-detail')->/filesPairView/{int:pk}/-PATCH-更新部分

相关内容

  • 没有找到相关文章

最新更新