如何测试响应包含特定的键和值

Pro*_*eus 1 python django

Django Rest框架显示了如何测试响应当你想测试整个返回的json时,这是可以的.但是,如果我只是想测试响应是否包含特定的值,我试过这个...

def test_get_user_shows_count(self):
            url = reverse('user_list')
            response = self.api_factory.get(url)
            self.assertContains(response, {'count': 1})
Run Code Online (Sandbox Code Playgroud)

JSON响应

{
    'count': 1,
    'is_active': False,
    'url': 'http: //testserver/v1/user/95',
    'id': 95,
    'display_name': None
}
Run Code Online (Sandbox Code Playgroud)

然而,这失败了,我能让它工作的唯一方法是将完整的例外json放入其中,我不想这样做.我如何测试上面的包含count并且只是1的eq?

Ala*_*air 5

response.data文档中建议的,如何使用测试.

self.assertEqual(response.data['count'], 1)
Run Code Online (Sandbox Code Playgroud)

如果你真的想,你可以使用json.loads将返回的json转换回Python dict.但是,所有额外的工作都在测试DRF可以转换response.data为JSON,这应该已经在其他地方进行过测试.

self.assertEqual(json.loads(response.content)['count'], 1)
Run Code Online (Sandbox Code Playgroud)