Python 如何在金字塔中对request.json_体进行单元测试?
我使用字段request.json_body检索编码的json body,如下所示: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
@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,调用它并检查它返回的字典。金字塔文档中有很好的例子。