[英]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.