SoapUI在模拟服务脚本中获取请求参数

Tho*_*n79 24 xml groovy web-services soapui

对于所有SoapUI常客来说,这可能是一个非常简单的方法.

在SoapUI模拟服务响应脚本中,如何在我回复的请求中提取值?

假设传入的请求有

<ns1:foo>
  <ns3:data>
    <ns3:CustomerNumber>1234</ns3:CustomerNumber>
  </ns3:data>
</ns1:foo>
Run Code Online (Sandbox Code Playgroud)

如何将"1234"变为Groovy变量?我尝试使用xmlHolder,但我似乎有错误的XPath.

(我知道如何设置属性并将其值集成到响应中.)

Sho*_*lla 32

如果您想访问SOAP请求并进行一些XPath处理,那么凭借GPathXmlSlurper的强大功能,可以更轻松地在soapUI中执行此操作.

以下是您访问客户编号的方式:

def req = new XmlSlurper().parseText(mockRequest.requestContent)
log.info "Customer #${req.foo.data.CustomerNumber}"
Run Code Online (Sandbox Code Playgroud)

从Groovy 1.6.3(在soapUI 2.5及更高版本中使用)开始,默认情况下,XmlSlurper在名称空间感知和非验证模式下运行,因此您无需执行任何其他操作.

干杯!
Shonzilla


Mat*_*ski 24

还有一个例子:

def request = new XmlSlurper().parseText(mockRequest.requestContent)
def a = request.Body.Add.x.toDouble()
def b = request.Body.Add.y.toDouble()
context.result = a + b
Run Code Online (Sandbox Code Playgroud)

在这个例子中,我们从请求中获取两个参数并将它们转换为双精度数.这样我们就可以对参数进行计算.此示例的示例SoapUI响应是:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:typ="http://example.org/math/types/">
   <soapenv:Header/>
   <soapenv:Body>
      <typ:AddResponse>
         <result>${result}</result>
      </typ:AddResponse>
   </soapenv:Body>
</soapenv:Envelope>
Run Code Online (Sandbox Code Playgroud)

您可以看到计算结果如何传递回响应.