【发布时间】:2020-05-23 04:07:19
【问题描述】:
我已经阅读:Django REST Framework - Set request in serializer test?。它对我不起作用!因为我使用的是 APIClient 而不是像他这样的 RequestFactory。
我构建了一个使用 Django REST 框架实现后端的 Web 应用程序。现在我正在编写单元测试,我在测试我的序列化方法时遇到了一个问题。这是我正在努力解决的序列化程序方法的一个示例:
def get_can_edit(self, obj):
request = self.context['request']
user = User.objects.get(username=request.user)
return user == obj.admin
当试图从测试中调用它时,首先我声明了一个序列化器的实例:
但是现在我需要 self.serializer 在 get_can_edit 执行 self.context.get('request') 时获得正确的请求。我使用 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)
现在我被卡住了,因为我不确定如何将 request1 添加到序列化程序以便 request = self.context['request'] 将返回
谢谢。
【问题讨论】:
标签: django testing django-rest-framework django-serializer