轉載自:https://www.jianshu.com/p/7c672426a165java
一. 背景:
調用接口時有個請求參數是對請求入參按必定規則進行加密生成的驗籤值,每次不一樣參數的請求生成惟一的驗籤值,驗籤值不對,接口會報相應的錯誤。工具
二. 解決方案:
- 代碼寫死帳號,寫死的帳號不走驗證邏輯
- 調用接口以前,按照加密規則生成同樣的驗籤值
三. 下面用soapui工具進行接口測試生成正確驗籤值的示例:
- 參數化請求參數(DataSource)
- 使用groovy腳本調用java加密的jar包生成正確的驗籤值 (Groovy Script)
- 調用接口 (HTTP)
- 校驗輸出是否正確 (Groovy Script 或者 Assertion TestStep)
- 將須要的數據輸出 (DataSink)
- 循環參數化的參數進行不一樣參數的接口測試 (DataSoure Loop)
- 執行全部參數請求
1.參數化請求參數
1.1 新建DataSource步驟oop
1.2 準備excle參數化數據測試
1.3 添加參數化文件,而且加上後續接口調用須要的字段名(最好和請求參數保持一致)ui
1.4 選擇須要的參數行數加密
2.Groovy 腳本
2.1 添加Groovy Script腳本步驟spa
2.2 將java加密jar包放在soapui安裝目錄下--C:\Program Files\SmartBear\SoapUI-Pro-5.1.2\bin\extblog
2.3 寫groovy腳本調用java加密jar包生成同樣的驗籤值,放在soapui的安裝目錄下--C:\Program Files\SmartBear\SoapUI-Pro-5.1.2\bin\scripts下
將公用的腳本都可放在次目錄下,供soapui直接調用接口
2.4 soapui裏面的groovy腳本調用公用的scripts裏面的腳本按不一樣請求生成正確的sign值ip
- //調用公用加密方法
- 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的參數值
- 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值被上個步驟設置,調取接口
4. 校驗參數是否正確,本身根據需求進行校驗
5. 將須要的參數輸出
6. 設置循環的參數和接口
7. 執行數據源裏面的接口,進行自動化測試
--------------至此,整個接口就能夠順利自動化調取了和校驗了----------------