之前判斷接口類型和返回值用beanshell,可見JMeter(5)-JMeter之BeanShell使用
優化點
- 接口測試里面對返回字段的類型驗證和值驗證為基本需求,將方法導成jar文件,導入之后方便每個斷言可以調用。
- 補充對null類型、Array類型的判斷
步驟
- 將判斷方法打包成jar文件
java項目打包成jar
我的jar下載 -
導入jmeter項目中
- 判斷接口返回字段值正確性(EqualsJsonValue類)
beanshell的調用代碼如下
import com.susie.action.equals.EqualsJsonValue; String standardData = "{'uid':123,'phone':1,'has_password':true,'location':{'province':true,'city':'123'},'cpma':1}"; EqualsJsonValue equalsValue = new EqualsJsonValue(); Failure = !equalsValue.respValueAssertion(standardData, prev.getResponseDataAsString()); //斷言結果 FailureMessage = equalsValue.getMessage(); //斷言錯誤信息
運行結果

- 判斷接口返回字段類型正確性(EqualsJsonType類)
beanshell的調用代碼如下
import com.susie.action.equals.EqualsJsonType; String standardData = "{'uid':123,'phone':1,'has_password':true,'location':{'province':true,'city':'\u6c55\u5934\u5e02'},'cpma':null}"; EqualsJsonType equalsJson = new EqualsJsonType(); Failure = !equalsJson.respTypeAssertion(standardData, prev.getResponseDataAsString()); FailureMessage = equalsJson.getMessage();
-
格式化每個接口的字段斷言
將每個需要檢查的字段(期望響應)直接用csv記錄,每次比較直接讀取進行比對無需一個個斷言,非常方便~
通過CSV Data Set Config讀取,在beanshell中比較,調用方式與前面類似,獲取標准響應
String standardDataShell = vars.get("standardData").toString();
注意: 讀取csv中的json的時要注意json的逗號&雙引號
在這里坑了許久,因為csv是以逗號區分不同列的數據,所以,要把json里面的逗號改稱分號,雙引號改稱單引號;
如果覺得我的文章對您有用,請隨意贊賞。您的支持將鼓勵我繼續創作!
贊賞支持

作者:susie醬
鏈接:https://www.jianshu.com/p/78df350d78e5
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並注明出處。
不是很明白
如果我想判斷返回數據里面字段A的值類型對不對該怎么寫呢?比如說定義的是字段A應該返回int型的值,但實際上返回的是string類型的值,這種斷言我怎么寫呢
在benshell里面寫java腳本就可以驗證。
思路是提取返回數據里字段A,得到A的類型,跟期望的類型比較。類型一致則斷言成功;類型不一致則斷言失敗。
我這篇里面只是把比較的方法封裝在jar包里面,方便每次都直接調用來判斷而已。