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请求中插入新标记的主要内容,如果未能解决你的问题,请参考以下文章
Web 服务 SOAP 请求适用于 SOAPUI,但不适用于 PHP