一. 背景:
調(diào)用接口時有個請求參數(shù)是對請求入?yún)匆欢ㄒ?guī)則進行加密生成的驗簽值,每次不同參數(shù)的請求生成唯一的驗簽值,驗簽值不對,接口會報相應(yīng)的錯誤。
二. 解決方案:
- 代碼寫死賬號,寫死的賬號不走驗證邏輯
- 調(diào)用接口之前,按照加密規(guī)則生成一樣的驗簽值
三. 下面用soapui工具進行接口測試生成正確驗簽值的示例:
- 參數(shù)化請求參數(shù)(DataSource)
- 使用groovy腳本調(diào)用java加密的jar包生成正確的驗簽值 (Groovy Script)
- 調(diào)用接口 (HTTP)
- 校驗輸出是否正確 (Groovy Script 或者 Assertion TestStep)
- 將需要的數(shù)據(jù)輸出 (DataSink)
- 循環(huán)參數(shù)化的參數(shù)進行不同參數(shù)的接口測試 (DataSoure Loop)
- 執(zhí)行所有參數(shù)請求
1.參數(shù)化請求參數(shù)
1.1 新建DataSource步驟
Paste_Image.png
1.2 準(zhǔn)備excle參數(shù)化數(shù)據(jù)
Paste_Image.png
1.3 添加參數(shù)化文件,并且加上后續(xù)接口調(diào)用需要的字段名(最好和請求參數(shù)保持一致)
Paste_Image.png
1.4 選擇需要的參數(shù)行數(shù)
Paste_Image.png
2.Groovy 腳本
2.1 添加Groovy Script腳本步驟
Paste_Image.png
2.2 將java加密jar包放在soapui安裝目錄下--C:\Program Files\SmartBear\SoapUI-Pro-5.1.2\bin\ext
Paste_Image.png
2.3 寫groovy腳本調(diào)用java加密jar包生成一樣的驗簽值,放在soapui的安裝目錄下--C:\Program Files\SmartBear\SoapUI-Pro-5.1.2\bin\scripts下
將公用的腳本均可放在次目錄下,供soapui直接調(diào)用
Paste_Image.png
2.4 soapui里面的groovy腳本調(diào)用公用的scripts里面的腳本按不同請求生成正確的sign值
Paste_Image.png
//調(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值被上個步驟設(shè)置,調(diào)取接口
Paste_Image.png
4. 校驗參數(shù)是否正確,自己根據(jù)需求進行校驗
5. 將需要的參數(shù)輸出
Paste_Image.png
6. 設(shè)置循環(huán)的參數(shù)和接口
Paste_Image.png
7. 執(zhí)行數(shù)據(jù)源里面的接口,進行自動化測試
Paste_Image.png
--------------至此,整個接口就可以順利自動化調(diào)取了和校驗了----------------