【发布时间】:2018-04-14 04:56:06
【问题描述】:
我正在编写一个单元测试来检查 telecasts 键是否在此函数返回的 JSON 数据中(在我的 views.py 中):
def my_function(request, date1='', date2='', date3='', date4=''):
::some other functions...::
return HttpResponse(data, content_type='application/json')
如您所见,我要检查的 JSON 是通过 HttpResponse 作为变量 data
发送的在前端收到此 JSON 数据时,其结构如下:
{"records": [ {"program": "WWE ENTERTAINMENT", "telecasts": 201,...}, {..} ]
所以这就是我尝试编写单元测试的方式,但是当我运行它时出现错误:
def my_test(self):
"""Data returned has telecasts key"""
request = self.client.get(
'/apps/myapp/2014-08-01/2015-06-10/2016-01-13/2016-03-23/',
{dictionary of optional parameters}
)
force_authenticate(request, user=self.user)
response = my_function(
request,
'2014-08-01',
'2015-06-10',
'2016-01-13',
'2016-03-23'
)
telecasts_check = response['records'][0]['telecasts']
self.assertRaises(KeyError, lambda: telecasts_check)
【问题讨论】:
-
您似乎对
self.client.get的作用感到困惑。它不是构造请求,而是通过测试客户端调用您的实际视图。因此,如果您正在使用它,则无需像您一样通过直接调用该函数来获取response。
标签: python json django unit-testing django-unittest