Django Rest Framework显示如何test a response当你想测试整个返回的json时,这是可以的。但是,如果我只想测试响应是否包含特定的键和值,我试过这个......
def test_get_user_shows_count(self):
url = reverse('user_list')
response = self.api_factory.get(url)
self.assertContains(response, {'count': 1})
JSON响应
{
'count': 1,
'is_active': False,
'url': 'http: //testserver/v1/user/95',
'id': 95,
'display_name': None
}
然而,这失败了,我能让它工作的唯一方法就是将完整的例外json放入其中,我不想这样做。如何测试上面包含的count
并且只是1的等式?
答案 0 :(得分:5)
如何使用response.data
作为suggested in the docs进行测试。
self.assertEqual(response.data['count'], 1)
如果你真的想,你可以使用json.loads
将返回的json转换回Python dict。但是,所有额外的工作都在测试DRF是否可以将response.data
转换为JSON,这应该已经在其他地方进行过测试。
self.assertEqual(json.loads(response.content)['count'], 1)