我构建了一个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()
但现在我需要self.serializer
的时候有正确的请求get_can_edit
呢self.context.get('request')
。我使用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
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句