簡體   English   中英

Django Rest - 測試 api 刪除

[英]Django Rest - testing api delete

目前我正在測試我的 django rest api,但我被困在刪除方法上。

我的網址看起來像這樣

  path('books/shelfs/<int:shelf>/readers/<int:pk>/',
    views.ReaderViewSet.as_view(
        {'get': 'retrieve', 'delete': 'destroy', 'patch': 'partial_update'}),

我的 ViewSets 看起來像這樣

  def destroy(self, request, pk=None, *args, **kwargs):
    if request.data.get("book_type") is None:
        raise ParseError(detail="book_type is required, options are : 'global, non-global'")
    try:
        instance = self.get_object()
        user = self.request.user
        serializer = self.get_serializer(self.get_object())
        .......
        self.perform_destroy(instance)
    except Http404:
        pass
    return Response(status=status.HTTP_204_NO_CONTENT)

 

我的測試用例是這樣的

   def test_book_delete(self):
   
    # check if delete works
    book_type = {'book_type': 'global'}

    response = self.client.delete("/api/v1/books/shelfs/{}/"
                                  "readers/{}/".format(
                                      1, 2), data=book_type)
    self.assertEqual(response.status_code, 204)

但它總是 415 錯誤

問題是,如何在 delete 中傳遞這個book_type

HTTP 415表示服務器拒絕接受 JSON 負載。

文檔

如果需要對請求正文進行顯式編碼,可以通過設置 content_type 標志來實現。

所以嘗試設置content_type如下:

response = self.client.delete("/api/v1/books/shelfs/{}/"
                                  "readers/{}/".format(
                                      1, 2), data=book_type, content_type="application/json")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM