如何从测试用例中发送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
-更新部分