Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.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 如何在金字塔中对request.json_体进行单元测试?_Python_Python 3.x_Pyramid - Fatal编程技术网

Python 如何在金字塔中对request.json_体进行单元测试?

Python 如何在金字塔中对request.json_体进行单元测试?,python,python-3.x,pyramid,Python,Python 3.x,Pyramid,我使用字段request.json_body检索编码的json body,如下所示: @view_config(route_name='reminder', renderer='json', permission='view', xhr=True, request_method='POST') def reminder(request): process(body.request.json_body) return {'result':'OK'} 如何进行单元测试(我是pyth

我使用字段request.json_body检索编码的json body,如下所示:

@view_config(route_name='reminder', renderer='json', permission='view', xhr=True, request_method='POST')
def reminder(request):
    process(body.request.json_body)
    return {'result':'OK'}
如何进行单元测试(我是python新手,使用3.4.4)。我使用了金字塔测试中的DummyRequest(),但在运行测试时,它抱怨:

'DummyRequest' object has no attribute 'json_body'
当我读到Dummy请求受到限制时,我理解这一点。 我如何用json体填充“test”请求?
我想我找错了地方,因为我无法(谷歌)找到关于这方面的好信息:(

有几种方法可以做到这一点。我喜欢使用WebTest,它允许你用wsgi调用一个测试应用程序,然后你可以调用这个测试对象来发送json。简言之,它是这样的:

   # my_app is a wsgi callable
    test_app = webtest.TestApp(my_app)
    # my json post body as a dict
    params = {'name': 'Iain', 'quest': 'find grail'}
    response = test_app.post_json('/cross_bridge', params=params})
    assert response.json['status'] == 'success', "should be a success msg"

我们这些书呆子会争论这是单元测试、集成测试还是功能测试,但我认为这正是您想要的。WebTest文档有更多的例子。请注意,您还可以将值传入WSGI dict,并且有一些方法用于传入头和验证头。我们将其与Pyra一起使用mid的远程用户身份验证策略用于设置哪个用户登录请求。我将整个过程封装在标准的unittest类中,并使用一个基类作为额外的样板文件。

在创建对象时,您可以将其作为构造函数参数

testing.DummyRequest(json_body=json_参数,method='POST')

这应该行得通。对我来说很好

谢谢Lain,我想这就是我需要的,但是没有wsgi要求的单元测试有吗?要降低一层,跳过json的输入和输出,你可以直接测试视图callable,调用它并检查它返回的字典。金字塔文档中有很好的例子。