Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何测试包含特定键和值的响应_Python_Django - Fatal编程技术网

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

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

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})
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
。现在修好了。