一. 背景:
調(diào)用接口時(shí)有個(gè)請(qǐng)求參數(shù)是對(duì)請(qǐng)求入?yún)匆欢ㄒ?guī)則進(jìn)行加密生成的驗(yàn)簽值大咱,每次不同參數(shù)的請(qǐng)求生成唯一的驗(yàn)簽值,驗(yàn)簽值不對(duì),接口會(huì)報(bào)相應(yīng)的錯(cuò)誤涎嚼。
二. 解決方案:
- 代碼寫死賬號(hào),寫死的賬號(hào)不走驗(yàn)證邏輯
- 調(diào)用接口之前挑秉,按照加密規(guī)則生成一樣的驗(yàn)簽值
三. 下面用soapui工具進(jìn)行接口測(cè)試生成正確驗(yàn)簽值的示例:
- 參數(shù)化請(qǐng)求參數(shù)(DataSource)
- 使用groovy腳本調(diào)用java加密的jar包生成正確的驗(yàn)簽值 (Groovy Script)
- 調(diào)用接口 (HTTP)
- 校驗(yàn)輸出是否正確 (Groovy Script 或者 Assertion TestStep)
- 將需要的數(shù)據(jù)輸出 (DataSink)
- 循環(huán)參數(shù)化的參數(shù)進(jìn)行不同參數(shù)的接口測(cè)試 (DataSoure Loop)
- 執(zhí)行所有參數(shù)請(qǐng)求
1.參數(shù)化請(qǐng)求參數(shù)
1.1 新建DataSource步驟
1.2 準(zhǔn)備excle參數(shù)化數(shù)據(jù)
1.3 添加參數(shù)化文件法梯,并且加上后續(xù)接口調(diào)用需要的字段名(最好和請(qǐng)求參數(shù)保持一致)
1.4 選擇需要的參數(shù)行數(shù)
2.Groovy 腳本
2.1 添加Groovy Script腳本步驟
2.2 將java加密jar包放在soapui安裝目錄下--C:\Program Files\SmartBear\SoapUI-Pro-5.1.2\bin\ext
2.3 寫groovy腳本調(diào)用java加密jar包生成一樣的驗(yàn)簽值,放在soapui的安裝目錄下--C:\Program Files\SmartBear\SoapUI-Pro-5.1.2\bin\scripts下
將公用的腳本均可放在次目錄下犀概,供soapui直接調(diào)用
2.4 soapui里面的groovy腳本調(diào)用公用的scripts里面的腳本按不同請(qǐng)求生成正確的sign值
//調(diào)用公用加密方法
def myMd5 = new MD5()
def key = "AAAAAAAAAAAAA"
//傳參
def mapMd5 = [:]
mapMd5 = [
'service':context.expand( '${DataSource#service_name}' ),
'version':context.expand( '${DataSource#version}' ),
'AAA':context.expand( '${DataSource#AAA}' ),
]
//取DataSource的參數(shù)值
def myDatasource = testRunner.testCase.testSteps["DataSource"]
//MD5加密 Start
def output = myMd5.getMapString(mapMd5,key)
log.info "output: " + output
def sign = myMd5.getMD5(output)
log.info "sign: " + sign
//MD5加密 End
testRunner.testCase.testSteps["HTTP"].setPropertyValue("sign",sign)
3.HTTP接口的sign值被上個(gè)步驟設(shè)置立哑,調(diào)取接口
4. 校驗(yàn)參數(shù)是否正確,自己根據(jù)需求進(jìn)行校驗(yàn)
5. 將需要的參數(shù)輸出
6. 設(shè)置循環(huán)的參數(shù)和接口
7. 執(zhí)行數(shù)據(jù)源里面的接口姻灶,進(jìn)行自動(dòng)化測(cè)試
--------------至此铛绰,整個(gè)接口就可以順利自動(dòng)化調(diào)取了和校驗(yàn)了----------------