soap UI 的groovy指令碼的複雜案例

2022-07-09 09:54:13 字數 3361 閱讀 1138

測試業務中,系統a 呼叫系統b的實時支付介面m,m又呼叫 外圍系統的支付環境,有如下2個原因,對於介面 m,做了個mock

(1)第三方外圍系統的環境,不太穩定,不是一直正常的,有時候調不通

(2)對於支付,有支付成功、支付失敗 的場景,需要進行構造

所以,對於介面 m,做了個mock,相當於,在介面m到 第三方的支付系統中間,做了個擋板,直接自己設定返回資訊

mock中的response報文:$$

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(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"))else

context.setproperty("retcode",retcode)

context.setproperty("errmsg",errmsg)

context.setproperty("trans_result",trans_result)

Groovy指令碼檢查html壞鏈結

這些天在搞gradle翻譯,因為原譯者在翻譯的同時也把檔案進行了整理,並且把翻譯過的章節放到新的資料夾中,導致可能有些超連結未改正過來變成死鏈結。if args.size 1 def file new file args 0 if file.isfile checkhtml file else if...

groovy 速學 03 指令碼

目錄 摘要 執行指令碼,繫結域 從命令列中執行指定指令碼 groovy example.groovy在其它程式中執行指定指令碼 有一指令碼檔案 example.groovy def s new example s.run 也可以通過該指令碼物件直接執行指令碼內的函式 通過 new 建立的指令碼物件可...

關於SOAPUI使用的技能

今天在測試乙個服務的時候,因為svn有問題無法獲取最新的客戶端包進行測試,且部門的頭又不讓測試人員使用eclipse進行測試,所以就還是拿出以前用過的soapui測試工具進行測試,但是其包含2個以上引數的時候,其一時沒有辦法,今天向一位開發同事討教得知,將傳送的報文加乙個標籤即可,我的總結如下 操作...