Python 如何测试包含特定键和值的响应
Django Rest框架展示了当您想要测试整个返回的json时,如何做到这一点。但是如果我只想测试响应是否包含一个特定的键和值,我尝试了这个Python 如何测试包含特定键和值的响应,python,django,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
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,我不想这样做。如何测试上面包含的
计数
且仅等于1?如何使用响应.数据
进行测试,如图所示
如果确实需要,可以使用json.loads
将返回的json转换回Python dict。但是,所有额外的工作都是测试DRF是否可以将response.data
转换为json,这应该在其他地方进行测试
self.assertEqual(json.loads(response.content)['count'], 1)
如何使用
response.data
进行测试,如图所示
如果确实需要,可以使用json.loads
将返回的json转换回Python dict。但是,所有额外的工作都是测试DRF是否可以将response.data
转换为json,这应该在其他地方进行测试
self.assertEqual(json.loads(response.content)['count'], 1)
self.assertContains(response.items(),('count',1))
?或者self.assertEqual(response.get(“count”),1)
?@padraiccnningham没有assertContains会给出属性“status\u code”错误self.assertEqual(response.content.data.get(“count”),1)
?self.assertContains(response.items(),('count',1))
?或者self.assertEqual(response.get(“count”),1)
?@padraiccnningham没有assertContains会给出一个属性“status\u code”错误那么self.assertEqual(response.content.data.get(“count”),1)
,它将与assertEqual
而不是assertContains
,因为这需要一个状态代码。然而,我想在这种情况下,assertEqual
更好?是的,我在最初的回答中错误地使用了assertContains
。现在已修复。这将适用于assertEqual
而不是assertContains
,因为这需要一个状态代码。然而,我想在这种情况下,assertEqual
更好?是的,我在最初的回答中错误地使用了assertContains
。现在修好了。