soapui中的groovy脚本怎么写

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了soapui中的groovy脚本怎么写相关的知识,希望对你有一定的参考价值。

参考技术A 下载并安装 SoapUI 的免费版本.
当你第一次运行时,看起来像下面这样:

我创建了一个工作空间存储我的项目,叫做 Automation. 为此,我们要去选择 ‘File’-> ‘New Soap Project’ ,填入项目名称和web服务的.wsdl 文件位置.

请确保你勾选了创建请求 'Create Requests' 和创建测试套件 'Create TestSuite', 然后点击 'OK'.
SoapUI 将会检查web服务,返回你可以在服务上调用的操作/方法. 在我的任务中,只有一个叫做SubmitRequestResponse的操作, 但我还是选择了 'Single TestCase with One Request for Each Operation'.

点击 'OK' 而你将会收到提醒,告知要为Test SuiteMultiple命名.

现在当SoapUI已经设置好了项目, 展开整个项目结构如下:

如果你在 Request 1 上单击, 你可以看到一个基础的请求格式.

LeoXu
翻译于 5个月前
0人顶
顶 翻译的不错哦!

我们需要在继续进行之前确保调用从web服务上获得了一个响应,所以我们添加一个soap请求。在我的情况里,web服务需要一个客户号跟着一个地点位置标签跟着一个或多个SalesOrders。所以我在 body 中用我的soap请求替换<part>?</part>标签。

点击绿色箭头(左上方)然后你将获得一个XML响应。

如果你有响应,那么你就在你需要在的地方。

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脚本怎么写的主要内容,如果未能解决你的问题,请参考以下文章

soapUI groovy脚本groovy.lang.MissingMethodException

利用groovy脚本获取soapui中请求和响应的值

soapui-使用groovy脚本执行用例请求

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

SoapUI NG Pro v1.9发布,Groovy功能消除脚本困扰

soapui-groovy脚本中文乱码及符号乱码响应乱码解决方案