zoukankan      html  css  js  c++  java
  • 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)

  • 相关阅读:
    ActiveReports中如何在后台导出运行时绑定数据源报表
    ActiveReports中如何控制页面的记录数
    WordPress建站固定链接问题
    Linux环境下使用g++编译C++
    Git diff结果显示分析
    VTK使用过程中遇到的问题
    右值引用、移动语义和完美转发(下)
    右值引用、移动语义和完美转发(中)
    右值引用、移动语义和完美转发(上)
    new和malloc的联系与区别(下)
  • 原文地址:https://www.cnblogs.com/xiaofeng91/p/13986204.html
Copyright © 2011-2022 走看看