我已经读过:Django REST Framework - Set request in serializer test?。而且它对我不起作用!因为我使用的是APIClient,而不是像他这样的RequestFactory。
我构建了一个Web应用程序,其中使用Django REST Framework实现了后端。现在,我正在编写单元测试,并且在测试序列化器方法时遇到问题。这是我正在苦苦挣扎的串行器方法的一个示例:
def get_can_edit(self, obj):
request = self.context['request']
user = User.objects.get(username=request.user)
return user == obj.admin
[尝试从测试中调用它时,首先我声明了序列化程序的实例:
但是现在,当get_can_edit执行self.context.get('request')时,我需要self.serializer具有正确的请求。我使用APIClient创建了带有正确信息的虚假请求:
self.client = APIClient()
self.client.force_authenticate(user)
conference = a_fake_conference
res = self.client.get('conference:conference-detail'. args=[conference.id])
serializer = ConferenceSerializer(conference, context={WHAT_IS_REQUEST?})
# I'm using a dict as context but the request gave me an error: context={'request': { 'user': user }}
sert.assertEqual(res.data, serializer.data)
现在,我被困住了,因为我不确定如何将请求1添加到序列化程序中,以便request = self.context['request']
将返回
谢谢。
使用wsgi_request
中的APIClient
获得WSGI请求对象。
self.client = APIClient()
self.client.force_authenticate(user)
request_object = self.client.wsgi_request
免责声明:不确定这是否是获取request
对象的DRF方法。