记录web服务调用并在之后为其提供服务的工具
ws-recorder的Python项目详细描述
说明
wsrecorder是一个为您的web服务提供代理的工具。此工具允许记录和提供webservices示例。 代理是python函数decorator。示例是xslt模板,它将请求转换为预期的答复。 示例有一种形式的决策树,在每个节点中执行针对配置的xpath的测试;树路径 取决于每个请求的xpath值。
更改
- 0.9.9:
- 使用lxml-xpath2-functions中的函数,可以使用前缀xp2f访问它们
用法
示例:
params = { 'request_msg_name': '//request/*', 'reply_envelope_body': '//reply/*', 'messages': { 'msg1': [ '//msg1/param1/text()', '//msg1/param2/text()' ], }, 'output_dir': '/tmp/tmpdir/, } recorder = WSRecorder(mode=WSRecorder.Mode.RECORD, **params) cls.record_service = staticmethod(recorder.decorator(web_service_mockup))
文档
该类的对象为Web服务提供代理。首先需要创建此类的对象才能使用代理。
wsrecorder.初始化
WSRecorder.__init__(self, request_msg_name, reply_envelope_body, output_dir, mode=None, output_filename='{0}.output',messages={}):
初始化wsrecord的对象。
mode:控制wsrecorder行为的参数。默认值:WSRecorder.Mode.TRANSPARENT。
可用值:
- WSRecorder.Mode.RECORD-根据配置将示例记录到输出目录中。
- WSRecorder.Mode.OVERRIDE-根据配置记录示例,覆盖已记录的消息。
- WSRecorder.Mode.SERVE-服务记录的示例,如果失败,则不命中webservices,引发NotRecordedException。
- WSRecorder.Mode.TRANSPARENT-不使用录制的示例,只需点击webservices。
- WSRecorder.Mode.SERVE_TRANSPARENT-尝试使用录制的示例,如果失败,只需点击webservices。
- WSRecorder.Mode.SERVE_RECORD-尝试使用录制的示例,如果失败,只需点击webservices并录制回复。
请求消息名:指示请求消息中的名称的xpath。消息名称随后用于配置 每个邮件的特定处理程序,并将不同邮件的答复保存在不同的文件中。
reply_envelope_body:表示回复消息正文的xpath。回复正文是回复消息的一部分,它 是有意义的,并且可以在答复中更改。回复正文上方的所有内容都是常量,并在每个回复中重复使用 信息。在这种情况下,reply_envelope_bodyxpath的回复消息不能有空节点,异常 NotRecordedException已筹集。
output目录:记录的样本存储在RECORD/OVERRIDE模式中,并从中记录 样本以SERVE模式读取。
output_filename:保存文件的模式。默认值{}.output。消息名传递给string.format 功能。
messages:已配置消息的字典。字典中的键是消息名,值是xpath列表, 对请求消息进行顺序检查。
pretty_print:boolean param确定输出文件是否应该进行良好打印。默认值:False。
例外情况:
ConfigurationException在初始化期间引发,条件是:
- Request message name is not proper xpath,
- Reply envelope body is not proper xpath,
- Chosen mode is not allowed,
- Any xpath for message is not proper xpath,
- Output directory path is not proper.
wsrecorder.decorator
WSRecorder.decorator(self, fn, mode=None):
您的Web服务的代理。它要求修饰函数作为第一个参数接受一个请求消息 并返回消息的回复。邮件的请求和答复必须是pythonstring或lxml.etree._Element。
例外情况:
NotRecordedException在服务模式下引发,如果示例没有对给定请求的答复。
- ConfigurationException在代理函数中引发,条件是:
- 配置的xpath与在录制的sample、raise-in模式下保存的xpath不匹配:record、override、
- 服务记录,
- 不允许给定模式。
- 带有回复信封正文的xpath不适合给定的消息回复。
示例用法
@obj.decorator def webservice1(request): return reply