Sam*_*rth 2 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:Body>
<cal:subtract>
<cal:x>1</cal:x>
<cal:y>1</cal:y>
</cal:subtract>
</soapenv:Body>
</soapenv:Envelope>
Run Code Online (Sandbox Code Playgroud)
以下是针对相同内容的示例响应
<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>
Run Code Online (Sandbox Code Playgroud)
我能够了解其他调度,但不了解XPATH,因为以下是我在XPATH调度中输入的内容
declare namespace cal='http://www.parasoft.com/wsdl/calculator/';
declare namespace soapenv='http://schemas.xmlsoap.org/soap/envelope/';
//cal:subtract/cal:x
Run Code Online (Sandbox Code Playgroud)
还观察到,如果我已经使用过SCRIPT分派并从下拉列表切换到XPATH,则该脚本在声明/脚本框/区域中可见
以下是问题:
请帮助我。
PS:我已经浏览过 http://www.soapui.org/soap-mocking/reference/mockoperation.html http://www.soapui.org/soap-mocking/mockoperations-and-responses.html
您在问题中提到的soapUI文档是获取信息的正确位置。但是,可用信息不完整。
搜索一段时间后,找到了详细信息。
最初,在Xpath和Script Dispatch方法之间感到困惑。
除了您要查找的内容以外,这里还有其他信息:
XPATH和SCRIPT调度是否相同
答案是否定的。两者都不一样
如果不是,那么XPATH调度实际上如何工作以从所有MockResponses列表中识别出要调度的响应
将以下信息文档中找到:
XQUERY -这类似于QUERY_MATCH,但不是很厉害; XPath表达式应用于传入的请求,结果值用于选择要返回的MockResponse。在前面的搜索结果示例中,我们可以设置XPath表达式以选择一个搜索词,然后创建以每个期望值命名的MockResponses。好处是我们不需要为新的搜索条件添加新的XPath语句,只需添加另一个MockResponse。
假设您创建了多个回应说PositiveResponse
,NegativeResponse
,ZeroResponse
为减的操作模拟服务。
这是您可能希望应用于请求并发送适当响应的示例条件。当然,您可能需要的数量就足够了。
PositiveResponse
-如果x,y值分别为10、5。NegativeResponse
-如果x,y值分别为5、10。ZeroResponse
-否则(如果以上都不满足,则为强制性)。这是您需要在为XPATH Dispatch模式指定的编辑器中编写的方式
declare namespace cal='http://www.parasoft.com/wsdl/calculator/';
if (//cal:subtract/cal:x[. = '10'] and //cal:subtract/cal:y[. = '5']) then
'PositiveResponse'
else
if (//cal:subtract/cal:x[. = '5'] and //cal:subtract/cal:y[. = '10']) then
'NegativeResponse'
else
'ZeroResponse'
Run Code Online (Sandbox Code Playgroud)
希望您现在知道并区分SCRIPT Dispatch模式。
我想造成混乱是因为SCRIPT和XPATH都显示了相同类型的编辑器。但是其中的内容将完全不同。如果您选择SCRIPT Dispatch模式,您也可以轻松地在编辑器顶部看到一条消息,记录日志,上下文,mockRequest变量的可用性,并且在选择XPATH时该消息将消失。
只是给SCIRPT例如情况下,如果您对它感兴趣:
def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context)
def holder = groovyUtils.getXmlHolder(mockRequest.requestContent)
def x = holder.getNodeValue("//*:x") as int
def y = holder.getNodeValue("//*:y") as int
context.result = x - y
Run Code Online (Sandbox Code Playgroud)
可以进行一个简单的测试(以区分两者),将上面的脚本复制到xpath并尝试进行测试,并收到不正确的错误消息
groovyUtils
。此测试将确认xpath和脚本不同。
在这里,您可能不需要创建多个响应,因为上述代码可以处理动态输入值并result
在响应中设置。减法运算的MockReponse 可能看起来像下面,占位符为${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>${result}</cal:Result>
</cal:subtractResponse>
</soapenv:Body>
</soapenv:Envelope>
Run Code Online (Sandbox Code Playgroud)
希望这可以澄清。
归档时间: |
|
查看次数: |
2132 次 |
最近记录: |