因此,我使用Viewsets和HyperlinkedModelSerializer对Actor和Role进行建模,并使用默认restapi。在
我的目标:一个单元测试,创建一个角色和一个相关的参与者。在
我的测试代码目前是:
def test_post_create_role_for_actor(self):
# default actor
actor = ActorFactory()
# inherits HyperlinkedModelSerializer
actor_serialized = ActorSerializer(actor)
postdata = {
'role': 'mydummyrole',
'actor': actor_serialized.data['url']
}
ret = self.client.post(self.url, json.dumps(postdata), content_type='application/json')
self.assertEqual(ret.status_code, 201)
self.assertTrue(Role.objects.filter(role='mydummyrole', actor_id=actor.id).exists())
现在我觉得这很难看,尤其是检索生成的url字段的序列化。事实上,我收到了一个反对的警告:
DeprecationWarning: Using
HyperlinkedIdentityField
without including the request in the serializer context is deprecated. Addcontext={'request': request}
when instantiating the serializer.
但是序列化程序生成的“url”字段似乎与任何请求无关。拿这块地的正确方法是什么?我觉得我遗漏了一个概念。一两个。在
蒂娅!在
在准备单元测试时,我将首先插入actor:
然后使用Django的^{} 方法通过使用参与者的id或url中用作标识符的任何字段来获取url:
^{pr2}$如何反转url取决于您如何设置资源,但这应该是可能的。在
相关问题 更多 >
编程相关推荐