金字塔单元测试发送参数

时间:2017-08-17 14:45:24

标签: json unit-testing pyramid

我有一个金字塔网络应用程序,我正在尝试进行单元测试。

在我的测试文件中,我有这段代码:

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发出相同的请求时,它可以正常工作。

1 个答案:

答案 0 :(得分:0)

通过testing.DummyRequest(params=params),您只填充request.params,而不是request.body

你可能想做类似的事情:

request = testing.DummyRequest(json_body=params)

此外,您可能希望在代码中直接使用request.json_body而不是json.loads(request.body)