SoapUI模拟服务/模拟操作中的XPATH调度
我是SoapUI新手,并试图了解XPATH分派在模拟服务中用于模拟操作的用法 以下是我迄今为止所做的工作SoapUI模拟服务/模拟操作中的XPATH调度,xpath,mocking,soapui,Xpath,Mocking,Soapui,我是SoapUI新手,并试图了解XPATH分派在模拟服务中用于模拟操作的用法 以下是我迄今为止所做的工作 为计算器创建了模拟服务 添加了模拟操作减法 以下是该操作的示例请求 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cal="http://www.parasoft.com/wsdl/calculator/"> <soapenv:Header/&
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cal="http://www.parasoft.com/wsdl/calculator/">
<soapenv:Header/>
<soapenv:Body>
<cal:subtract>
<cal:x>1</cal:x>
<cal:y>1</cal:y>
</cal:subtract>
</soapenv:Body>
</soapenv:Envelope>
还观察到,如果我已经使用了脚本分派并从下拉列表切换到XPATH,那么脚本在声明/脚本框/区域中是可见的
问题如下:
您在问题中提到的soapUI文档是获取信息的正确位置。然而,现有信息并不完整 搜索了一段时间后,找到了详细信息 最初,在Xpath和Script分派方法之间感到困惑 以下是您需要的其他信息: XPATH和脚本调度是否相同 答案是否定的。两者都不同 如果不是,XPATH分派实际上是如何在所有表单MockResponses列表中识别要分派的响应的 文档中的信息: XQUERY-这类似于查询匹配,但没有那么强大;XPath表达式应用于传入请求,结果值用于选择要返回的MockResponse。在前面的搜索结果示例中,我们可以将XPath表达式设置为选择搜索项,然后创建以每个期望值命名的MockResponses。优点是我们不需要为新的搜索条件添加新的XPath语句,只需要另一个MockResponse 假设您为模拟服务的减法操作创建了多个响应,如
正响应
,负响应
,零响应
以下是您可能希望应用于请求并发送适当响应的示例条件。当然,你可以有你想要的
正响应
-如果x、y值分别为10和5负响应
-如果x和y值分别为5和10ZeroResponse
-否则(如果上述任何一项都不满足要求,则这是强制性的)declare namespace class='1〕http://www.parasoft.com/wsdl/calculator/';
如果(//cal:subtract/cal:x[.='10']和//cal:subtract/cal:y[.='5']),则
“积极响应”
其他的
如果(//cal:subtract/cal:x[.='5']和//cal:subtract/cal:y[.='10']),则
“消极反应”
其他的
“零响应”
希望您现在了解并区分脚本调度模式
我认为造成这种混乱是因为脚本和XPATH都显示了相同类型的编辑器。但里面的内容将完全不同。此外,如果选择SCRIPTDispatch模式,并且在选择XPATH时,它将消失,那么您可以很容易地在编辑器顶部看到一条消息,说明日志、上下文、mockRequest变量的可用性
如果您对SCIRPT感兴趣,只需给出一个例子:
def groovyUtils=new com.eviware.soapui.support.groovyUtils(上下文)
def holder=groovyUtils.getXmlHolder(mockRequest.requestContent)
def x=holder.getNodeValue(“//*:x”)作为int
def y=holder.getNodeValue(“//*:y”)作为int
context.result=x-y
一个简单的测试可以是(为了区分两者),为xpath复制上面的脚本,然后尝试测试,soap fault收到的消息是不知道groovyUtils
。此测试将确认xpath和脚本是不同的
在这里,您可能不需要创建多个响应,因为上面的代码可以处理动态输入值并在响应中设置结果。
减法运算的mockresponse可能如下所示,带有占位符作为${result}
脚本的模拟响应:
${result}
希望这能澄清
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cal="http://www.parasoft.com/wsdl/calculator/">
<soapenv:Header/>
<soapenv:Body>
<cal:subtractResponse>
<cal:Result>?</cal:Result>
</cal:subtractResponse>
</soapenv:Body>
</soapenv:Envelope>
declare namespace cal='http://www.parasoft.com/wsdl/calculator/';
declare namespace soapenv='http://schemas.xmlsoap.org/soap/envelope/';
//cal:subtract/cal:x