【问题标题】:Pyramid Unit Test Sending Parameter金字塔单元测试发送参数
【发布时间】:2018-01-26 01:22:13
【问题描述】:

我有一个 Pyramid Web 应用程序,我正在尝试对其进行单元测试。

在我的测试文件中,我有这个 sn-p 代码:

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 发出相同的请求时,它工作得非常好。

【问题讨论】:

    标签: json unit-testing pyramid


    【解决方案1】:

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

    你可能想做这样的事情:

    request = testing.DummyRequest(json_body=params)
    

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

    【讨论】:

    • 如果我这样做会出现属性错误:NoneType' 对象没有属性。当我尝试调试时,无作为参数发送。我也尝试过 - request.json_body 和 json.loads(request.body),甚至将它们放在 try/except 中。
    • 好的,我真的没有时间调试这个,但你可以尝试做testing.DummyRequest(body=json.dumps(params).encode('utf-8')),或者request = testing.DummyRequest()然后request.body = json.dumps(params).encode('utf-8')
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-19
    • 2018-12-10
    • 2016-10-04
    • 2015-01-08
    • 1970-01-01
    • 2011-10-01
    • 2015-07-01
    相关资源
    最近更新 更多