簡體   English   中英

Django REST Framework-在序列化程序測試中設置請求?

[英]Django REST Framework - Set request in serializer test?

我構建了一個Web應用程序,其中使用Django REST Framework實現了后端。 現在,我正在編寫單元測試,並且在測試序列化器方法時遇到問題。 這是我正在苦苦掙扎的串行器方法的一個示例:

    def get_can_edit(self, obj):
      request = self.context.get('request')
      user = User.objects.get(username=request.user)
      return user == obj.admin

當嘗試從測試中調用此方法時,首先我聲明一個序列化程序的實例:

self.serializer = ConferenceSerializer()

但是現在當get_can_edit執行self.context.get('request')時,我需要self.serializer具有正確的請求。 我已經使用RequestFactory用正確的信息創建了一個偽請求:

self.request1 = RequestFactory().get('./fake_path')
self.request1.user = self.user1

現在我陷入困境,因為我不確定如何將request1添加到serializer ,以便self.context.get('request')將返回request1

謝謝。

在實例化測試中的序列化程序時,您需要傳遞context參數以將request1添加到序列化程序的context中。

來自DRF文檔, 其中包括額外的上下文:

您可以在實例化序列化程序時通過傳遞context參數來提供任意其他上下文。

您需要執行以下操作:

# pass context argument
self.serializer = ConferenceSerializer(context={'request': request1})

這將提供所需的request1對象在您的序列化context

暫無
暫無

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

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