1、通常可以使用响应断言来判断,但是接口如果返回响应过于复杂,或者需要校验多个响应时,不太实用
2、使用BeanShell断言
响应示例如下:需要校验返回data中的ranking,以及top_list数组
{ "code":1000, "message":"成功", "data": { "top_list": [ { "nickname":"honglu", "member_id":"93435016", "role":"1", "area":"2", "directcount":"9", "groupcount":"107" }, { "nickname":"用户17xixfjks附近开始代理费计算的", "member_id":"93435776", "role":"1", "area":"2", "directcount":"30", "groupcount":"47" }, { "nickname":"用户9437031758", "member_id":"93435850", "role":"1", "area":"2", "directcount":"13", "groupcount":"32" }, { "nickname":"用户06", "member_id":"93435765", "role":"1", "area":"2", "directcount":"27", "groupcount":"29" }, { "nickname":"用户04", "member_id":"93435763", "role":"1", "area":"2", "directcount":"12", "groupcount":"12" } ], "direct":"9", "group":"107", "ranking":"1" }, "agent":"Apache-HttpClient\/4.5.5 (Java\/10.0.2)", "client_type":"pc" }
接口校验脚本如下:
import org.json.*; import java.util.Arrays; import org.apache.jmeter.assertions; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.assertions.AssertionResult; //取响应状态码 String code = prev.getResponseCode(); log.info("返回code为:" + code); //判断响应code是否一致 if (code.equals("${my_code}")) { String response_data = prev.getResponseDataAsString();//获取接口返回数据 JSONObject response_json = new JSONObject(response_data);//转换成json //校验data里面ranking String ranking = response_json.get("data").get("ranking").toString(); log.info("返回ranking为:" + ranking); if(ranking.equals("${my_ranking}")) {Failure = false;} else { Failure = true; FailureMessage = "响应ranking与预期不符"; } //校验data中top_list数组 JSONArray response_array = response_json.get("data").getJSONArray("top_list");//将json转化为Array,根据响应格式确定从哪里开始转化数组 log.info("数组长度是:" + response_array.length()); String[][] array = new String[][]{{"93435016","honglu","1","2","9","107"},{"93435776","用户17xixfjks附近开始代理费计算的","1","2","30","47"},{"93435850","用户9437031758","1","2","13","32"},{"93435765","用户06","1","2","27","29"},{"93435763","用户04","1","2","12","12"}}; for (int i=0;i<response_array.length();i++) { String member_id = response_array.getJSONObject(i).get("member_id").toString(); String nickname = response_array.getJSONObject(i).get("nickname").toString(); String role = response_array.getJSONObject(i).get("role").toString(); String area = response_array.getJSONObject(i).get("area").toString(); String directcount = response_array.getJSONObject(i).get("directcount").toString(); String groupcount = response_array.getJSONObject(i).get("groupcount").toString(); if (member_id.equals(array[i][0]) && nickname.equals(array[i][1]) && role.equals(array[i][2]) && area.equals(array[i][3]) && directcount.equals(array[i][4]) && groupcount.equals(array[i][5])) { log.info("第"+i+"行校验成功"); Failure = false; continue; } else{ Failure = true; FailureMessage = "响应top_list与预期不符"; } } } else { Failure = true; FailureMessage = "响应code与预期不符"; prev.setStopThread(true);//失败,则暂停,后面接口不需要执行了 }