如何在金字塔中对 request.json_body 进行单元测试?
How to unit test request.json_body in pyramid?
我使用字段 request.json_body 来检索编码的 json 正文,例如:
@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'
据我了解,DummyRequest 受到限制。
我怎样才能用 json 正文填充 "test" 请求?
我想我看错了角落,因为我不能 (google) 关于这个的好信息:(
有几种方法可以做到这一点。我喜欢使用 WebTest,它允许您从可调用的 wsgi 中创建一个测试应用程序,然后您可以调用此测试 object 来发送和发送 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 的值,并且有用于传入 headers 和验证 headers 的方法。我们将其与 Pyramid 的远程用户身份验证策略一起使用,以设置哪个用户登录请求。我用标准单元测试 classes 包装了整个东西,用一个基础 class 来做我的额外样板。
您可以在创建对象时将其作为构造函数参数。
testing.DummyRequest(json_body=json_params, method='POST')
这应该有效。适合我
我使用字段 request.json_body 来检索编码的 json 正文,例如:
@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'
据我了解,DummyRequest 受到限制。 我怎样才能用 json 正文填充 "test" 请求? 我想我看错了角落,因为我不能 (google) 关于这个的好信息:(
有几种方法可以做到这一点。我喜欢使用 WebTest,它允许您从可调用的 wsgi 中创建一个测试应用程序,然后您可以调用此测试 object 来发送和发送 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 的值,并且有用于传入 headers 和验证 headers 的方法。我们将其与 Pyramid 的远程用户身份验证策略一起使用,以设置哪个用户登录请求。我用标准单元测试 classes 包装了整个东西,用一个基础 class 来做我的额外样板。
您可以在创建对象时将其作为构造函数参数。
testing.DummyRequest(json_body=json_params, method='POST')
这应该有效。适合我