当前位置:  开发笔记 > 前端 > 正文

SoapUI模拟服务/模拟操作中的XPATH调度

如何解决《SoapUI模拟服务/模拟操作中的XPATH调度》经验,为你挑选了1个好方法。

我是SoapUI的新手,并试图了解XPATH调度在模拟服务中用于模拟操作的用法。

这是我到目前为止所做的

    为计算器创建了模拟服务

    添加了模拟运算减法

以下是该操作的示例请求

    
   
   
      
         1
         1
      
   

以下是针对相同内容的示例响应


   
   
      
         ?
      
   

我能够了解其他调度,但不了解XPATH,因为以下是我在XPATH调度中输入的内容

declare namespace cal='http://www.parasoft.com/wsdl/calculator/';
declare namespace soapenv='http://schemas.xmlsoap.org/soap/envelope/';
//cal:subtract/cal:x

还观察到,如果我已经使用过SCRIPT分派并从下拉列表切换到XPATH,则该脚本在声明/脚本框/区域中可见

以下是问题:

    XPATH和SCRIPT调度是否相同

    如果不是,那么XPATH调度实际上如何工作以从所有MockResponses列表中识别出要调度的响应

请帮助我。

PS:我已经浏览过 http://www.soapui.org/soap-mocking/reference/mockoperation.html http://www.soapui.org/soap-mocking/mockoperations-and-responses.html



1> Rao..:

您在问题中提到的soapUI文档是获取信息的正确位置。但是,可用信息不完整。

搜索一段时间后,找到了详细信息。

最初,在XpathScript Dispatch方法之间感到困惑。

除了您要查找的内容以外,这里还有其他信息:

XPATH和SCRIPT调度是否相同

答案是否定的。两者都不一样

如果不是,那么XPATH调度实际上如何工作以从所有MockResponses列表中识别出要调度的响应

将以下信息文档中找到:

XQUERY -这类似于QUERY_MATCH,但不是很厉害; XPath表达式应用于传入的请求,结果值用于选择要返回的MockResponse。在前面的搜索结果示例中,我们可以设置XPath表达式以选择一个搜索词,然后创建以每个期望值命名的MockResponses。好处是我们不需要为新的搜索条件添加新的XPath语句,只需添加另一个MockResponse。

假设您创建了多个回应说PositiveResponseNegativeResponseZeroResponse的操作模拟服务

这是您可能希望应用于请求并发送适当响应的示例条件。当然,您可能需要的数量就足够了。

    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'

希望您现在知道并区分SCRIPT Dispatch模式。

我想造成混乱是因为SCRIPTXPATH都显示了相同类型的编辑器。但是其中的内容将完全不同。如果您选择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

可以进行一个简单的测试(以区分两者),将上面的脚本复制到xpath并尝试进行测试,并收到不正确的错误消息groovyUtils。此测试将确认xpath脚本不同。

在这里,您可能不需要创建多个响应,因为上述代码可以处理动态输入值并result在响应中设置。减法运算的MockReponse 可能看起来像下面,占位符${result}

脚本的响应:


   
   
      
         ${result}
      
   

希望这可以澄清。

推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有