Skip to main content
 首页 » 编程设计

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

2025年05月04日37leader

Django Rest 框架展示了如何 test a response当你想测试整个返回的 json 时,这是可以的。但是如果我只是想测试响应是否包含特定的key 和value 我试过这个...

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 
} 

但是,这失败了,我可以让它工作的唯一方法是将完整的异常(exception) json 放入,我不想这样做。我如何测试上面包含 count 并且 eq 仅等于 1?

请您参考如下方法:

如何使用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)