soap UI 的groovy脚本的复杂案例

   测试业务中,系统A 调用系统B的实时支付接口M,M又调用 外围系统的支付环境,有如下2个原因,对于接口 M,做了个mock

               (1)第三方外围系统的环境,不太稳定,不是一直正常的,有时候调不通

                (2)对于支付,有支付成功、支付失败 的场景,需要进行构造

所以,对于接口 M,做了个mock,相当于,在接口M到 第三方的支付系统中间,做了个挡板,直接自己设定返回信息

mock中的response报文:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tran="http://com.ulic.life/TransferService" xmlns:thir="http://thirdpay.pub.finance.life.ulic.com">
<soapenv:Header/>
<soapenv:Body>
<tran:collectResponse>
<tran:out>
<!--Optional:-->
<thir:accoName>${accoName}</thir:accoName>
<!--Optional:-->
<thir:accountType>${accountType}</thir:accountType>
<!--Optional:-->
<thir:amount>${amount}</thir:amount>
<!--Optional:-->
<thir:bankAccount>${bankAccount}</thir:bankAccount>
<!--Optional:-->
<thir:bankArea>${bankArea}</thir:bankArea>
<!--Optional:-->
<thir:bankAreaName>${bankAreaName}</thir:bankAreaName>
<!--Optional:-->
<thir:bankCode>${bankCode}</thir:bankCode>
<!--Optional:-->
<thir:bankName>${bankName}</thir:bankName>
<!--Optional:-->
<thir:certiCode>${certiCode}</thir:certiCode>
<!--Optional:-->
<thir:certiType>${certiType}</thir:certiType>
<!--Optional:-->
<thir:city>${city}</thir:city>
<!--Optional:-->
<thir:completeTime>20171219123030</thir:completeTime>
<!--Optional:-->
<thir:errMsg>${errMsg}</thir:errMsg>
<!--Optional:-->
<thir:feeId>${feeId}</thir:feeId>
<!--Optional:-->
<thir:feePayMode>${feePayMode}</thir:feePayMode>
<!--Optional:-->
<thir:gpType>P</thir:gpType>
<!--Optional:-->
<thir:openningBank>${openningBank}</thir:openningBank>
<!--Optional:-->
<thir:openningBankName>${openningBankName}</thir:openningBankName>
<!--Optional:-->
<thir:organId>${organId}</thir:organId>
<!--Optional:-->
<thir:policyId>${policyId}</thir:policyId>
<!--Optional:-->
<thir:province>${province}</thir:province>
<!--Optional:-->
<thir:reqSN>${reqSN}</thir:reqSN>
<!--Optional:-->
<thir:retCode>${retCode}</thir:retCode>
<!--Optional:-->
<thir:sendCode>${sendCode}</thir:sendCode>
<!--Optional:-->
<thir:stdBankCode>${stdBankCode}</thir:stdBankCode>
<!--Optional:-->
<thir:success>${trans_result}</thir:success>
<!--Optional:-->
<thir:transType>${transType}</thir:transType>
</tran:out>
</tran:collectResponse>
</soapenv:Body>
</soapenv:Envelope>

 script脚本如下:

def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context)
def holder = groovyUtils.getXmlHolder(mockRequest.requestContent)
def accoName = holder.getNodeValue("//ns:accoName")
def accountType = holder.getNodeValue("//ns:accountType")
def amount = holder.getNodeValue("//ns:amount")
def bankAccount = holder.getNodeValue("//ns:bankAccount")
def bankArea = holder.getNodeValue("//ns:bankArea")
def bankAreaName = holder.getNodeValue("//ns:bankAreaName")
def bankCode = holder.getNodeValue("//ns:bankCode")
def bankName = holder.getNodeValue("//ns:bankName")
def certiCode = holder.getNodeValue("//ns:certiCode")
def certiType = holder.getNodeValue("//ns:certiType")
def city = holder.getNodeValue("//ns:city")
def feeId = holder.getNodeValue("//ns:feeId")
def feePayMode = holder.getNodeValue("//ns:feePayMode")
def openningBank = holder.getNodeValue("//ns:openningBank")
def openningBankName = holder.getNodeValue("//ns:openningBankName")
def organId = holder.getNodeValue("//ns:organId")
def policyId = holder.getNodeValue("//ns:policyId")
def province = holder.getNodeValue("//ns:province")
def reqSN = holder.getNodeValue("//ns:reqSN")
def sendCode = holder.getNodeValue("//ns:sendCode")
def stdBankCode = holder.getNodeValue("//ns:stdBankCode")
def transType = holder.getNodeValue("//ns:transType")
//log.info(holder.getText())
log.info(mockRequest.requestContent)
context.setProperty("accoName",accoName)
context.setProperty("accountType",accountType)
context.setProperty("amount",amount)
context.setProperty("bankAccount",bankAccount)
context.setProperty("bankArea",bankArea)
context.setProperty("bankAreaName",bankAreaName)
context.setProperty("bankCode",bankCode)
context.setProperty("bankName",bankName)
context.setProperty("certiCode",certiCode)
context.setProperty("certiType",certiType)
context.setProperty("city",city)
context.setProperty("feeId",feeId)
context.setProperty("feePayMode",feePayMode)
context.setProperty("openningBank",openningBank)
context.setProperty("openningBankName",openningBankName)
context.setProperty("organId",organId)
context.setProperty("policyId",policyId)
context.setProperty("province",province)
context.setProperty("reqSN",reqSN)
context.setProperty("sendCode",sendCode)
context.setProperty("stdBankCode",stdBankCode)
context.setProperty("transType",transType)
def trans_result=0
def errMsg=""
def retCode="0000"
if(bankAccount.endsWith("0")){
trans_result=0
}else{
trans_result=1
retCode="0001"
errMsg="余额不足"
}
context.setProperty("retCode",retCode)
context.setProperty("errMsg",errMsg)
context.setProperty("trans_result",trans_result)

原文地址:https://www.cnblogs.com/xiaofeng91/p/13986204.html