SOAPUI中的Groovy脚本,用于在Soap请求中插入新标记

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SOAPUI中的Groovy脚本,用于在Soap请求中插入新标记相关的知识,希望对你有一定的参考价值。

我正在使用SOAP UI pro。我的要求是,我需要编写一个groovy脚本,为先前处理的请求添加一些标记和元素。

下面是我的初始请求,其名称是我的SOAP项目中的“Certify Request”

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:pay="http://www.abcdefgh.com/eai/xsd/custom/Payout.xsd">
   <soapenv:Header/>
   <soapenv:Body>
      <pay:request>
         <pay:header>
            <pay:applicationID>TANDEM001</pay:applicationID>
            <pay:hostname>WUNS1</pay:hostname>
            <pay:timestamp>${=new java.text.SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ").format(new Date())}</pay:timestamp>
            <pay:correlationID>${#TestCase#CorrelationID}</pay:correlationID>
         </pay:header>

         <pay:input>
            <pay:payoutTransactionDetails>             

               <pay:transferDetails>
                  <pay:sendCountryCode>${#TestCase#sendCountryCode}</pay:sendCountryCode>
                  <pay:sendAmount>
                     <pay:currencyCode>${#TestCase#sendCurrencyCode}</pay:currencyCode>
                     <pay:value multiplier="100">${#TestCase#sendAmount}</pay:value>
                     <pay:fxRate multiplier="100">${#TestCase#senderfxRate}</pay:fxRate>

                  </pay:sendAmount>
                  <pay:receiveCountryCode>${#TestCase#receiveCountryCode}</pay:receiveCountryCode>
                  <pay:receiveAmount>
                     <pay:currencyCode>${#TestCase#receiveCurrencyCode}</pay:currencyCode>
                     <pay:value multiplier="100">${#TestCase#receiveAmount}</pay:value>
                     <pay:fxRate multiplier="100">${#TestCase#receiverfxRate}</pay:fxRate>
                  </pay:receiveAmount>
                  <pay:overallFX multiplier="100000000">${#TestCase#OverallFX}</pay:overallFX>
               </pay:transferDetails>          

            </pay:payoutTransactionDetails>
         </pay:input>
      </pay:request>
   </soapenv:Body>
</soapenv:Envelope>

我想在“”标签下面添加以下标签:

 <pay:senderAgent>
                  <pay:agentID>1760289</pay:agentID>
                  <pay:accountNumber>036526952</pay:accountNumber>
               </pay:senderAgent>

所以我的目标请求将如下所示:(并且它的名称应该是Initiate Request)

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:pay="http://www.abcdefgh.com/eai/xsd/custom/Payout.xsd">
   <soapenv:Header/>
   <soapenv:Body>
      <pay:request>
         <pay:header>
            <pay:applicationID>TANDEM001</pay:applicationID>
            <pay:hostname>WUNS1</pay:hostname>
            <pay:timestamp>${=new java.text.SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ").format(new Date())}</pay:timestamp>
            <pay:correlationID>${#TestCase#CorrelationID}</pay:correlationID>
         </pay:header>


         <pay:input>
            <pay:payoutTransactionDetails>

               <pay:senderAgent>
                  <pay:agentID>${#TestCase#senderAgentID}</pay:agentID>
                  <pay:accountNumber>${#TestCase#senderAgentAcountNumber}</pay:accountNumber>
               </pay:senderAgent>

               <pay:transferDetails>
                  <pay:sendCountryCode>${#TestCase#sendCountryCode}</pay:sendCountryCode>
                  <pay:sendAmount>
                     <pay:currencyCode>${#TestCase#sendCurrencyCode}</pay:currencyCode>
                     <pay:value multiplier="100">${#TestCase#sendAmount}</pay:value>
                     <pay:fxRate multiplier="100">${#TestCase#senderfxRate}</pay:fxRate>

                  </pay:sendAmount>
                  <pay:receiveCountryCode>${#TestCase#receiveCountryCode}</pay:receiveCountryCode>
                  <pay:receiveAmount>
                     <pay:currencyCode>${#TestCase#receiveCurrencyCode}</pay:currencyCode>
                     <pay:value multiplier="100">${#TestCase#receiveAmount}</pay:value>
                     <pay:fxRate multiplier="100">${#TestCase#receiverfxRate}</pay:fxRate>
                  </pay:receiveAmount>
                  <pay:overallFX multiplier="100000000">${#TestCase#OverallFX}</pay:overallFX>
               </pay:transferDetails>

            </pay:payoutTransactionDetails>
         </pay:input>
      </pay:request>
   </soapenv:Body>
</soapenv:Envelope>

我在这个链接https://community.smartbear.com/t5/SoapUI-Pro/Using-Groovy-to-insert-new-tag-into-request-Need-help-with/m-p/124928#M28773上提到了解决方案,但无法成功。

谢谢你的帮助

答案

您可以在groovy脚本中使用属性

def senderAgent=" <pay:senderAgent> .......   </pay:senderAgent>" 
testRunner.testCase.setPropertyValue("Variable",senderAgent)    

然后将该变量放在XML中

<pay:payoutTransactionDetails>
${#TestCase#senderAgent}
<pay:transferDetails>

因此,您已将xml值存储在groovy中,然后在XML中进行扩展

以上是关于SOAPUI中的Groovy脚本,用于在Soap请求中插入新标记的主要内容,如果未能解决你的问题,请参考以下文章

SOAPUI中文教程---脚本和脚本库

SOAPUI Groovy脚本,用于读取CSV并分配给属性

Groovy 摘要认证

Web 服务 SOAP 请求适用于 SOAPUI,但不适用于 PHP

soapUI groovy脚本groovy.lang.MissingMethodException

手把手教你接口自动化测试 – SoapUI & Groovy