Jmeter接口測試使用beanshell斷言json返回


一般情況下響應斷言就能解決很多問題,但是返回復雜的json時就需要用到beanshell斷言。

舉個例子

免費的接口API www.sojson.com/api/beian/sojson.com

host:    www.sojson.com

source:   api/beian/sojson.com (api/beian后面只能跟一級域名如:baidu.com或者sojson.com)

創建好線程組HTTP請求,給該請求加beanshell斷言,代碼如下,其中必須加prev.setSuccessful(false);設置用例的結果

beanshell代碼如下

 1 import com.google.gson.JsonObject;    
 2 import com.google.gson.JsonParser;
 3 import java.lang.*;
 4 //獲取上一個請求的返回
 5 response = prev.getResponseDataAsString(); 
 6 log.info(response);
 7 
 8 //正常情況的history應該為數據庫查詢出來的結果
 9 String history="{\"nature\":\"企業\",\"icp\":\"京ICP備16038595號\",\"indexUrl\":\"www.sojson.com\",\"sitename\":\"JSON在線解析\",\"domain\":\" sojson.com \",\"nowIcp\":\"京ICP備16038595號-2\",\"type\":200,\"search\":\"sojson.com\",\"checkDate\":\"\",\"name\":\"北京都芳商貿有限公司\"}";
10 //使用Gson解析json
11 JsonParser parser = new JsonParser();    
12 JsonObject responseObj = (JsonObject) parser.parse(response);
13 
14 JsonParser parser1 = new JsonParser();            
15 JsonObject historyObj = (JsonObject) parser1.parse(history); 
16 
17 if(history == "")  
18 {  
19 //    Failure = true;  
20     FailureMessage = "連接數據庫失敗或者數據庫內沒有歷史數據";   
21       
22 //調用Gson提供的Json對象euqals方法判斷是否一致  
23 }else if(responseObj.equals(historyObj) == false)  
24 {   
25     log.info("不一樣");
26     //設置該條用例結果,但是查看結果樹中不會打印出錯信息FailureMessage
27     prev.setSuccessful(false);
28 //把斷言失敗置為真,即用例失敗,並在結果樹中顯示FailureMessage 
29 Failure = true;  
30 FailureMessage = "請求返回和數據庫不匹配";   
31 }
32 else
33 {
34     log.info("倆一模一樣");    
35     }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM