我有一个金字塔网络应用程序,我正在尝试进行单元测试。
在我的测试文件中,我有这段代码:
anyparam = {"isApple": "True"}
@parameterized.expand([
("ParamA", anyparam, 'success')])
def test_(self, name, params, expected):
request = testing.DummyRequest(params=params)
request.session['AI'] = ''
response = dothejob(request)
self.assertEqual(response['status'], expected, "expected response['status']={0} but response={1}".format(expected, response))
而在我看来:
@view_config(route_name='function', renderer='json')
def dothejob(request):
params = json.loads(request.body)
value = params.get('isApple') #true or false.
然而,当我尝试对其进行单元测试时,我收到了这个错误:
JSONDecodeError: Expecting value: line 1 column 1 (char 0)
但是,当我通过网络浏览器通过POST发出相同的请求时,它可以正常工作。
答案 0 :(得分:0)
通过testing.DummyRequest(params=params)
,您只填充request.params
,而不是request.body
。
你可能想做类似的事情:
request = testing.DummyRequest(json_body=params)
此外,您可能希望在代码中直接使用request.json_body
而不是json.loads(request.body)
。