jmeter使用BeanShell断言校验接口响应
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"
}
接口校验脚本如下:
[code]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);//失败,则暂停,后面接口不需要执行了 }
- Jmeter 接口测试中使用Beanshell断言: 将接口响应报文与数据库结果对比
- jmeter测试(10)---通过接口新增数据后从数据库获取ID和接口返回的ID进行比较(使用beanshell断言)
- 接口测试工具-Jmeter使用笔记(四:响应断言)
- Jmeter入门实战(二)如何使用Jmeter的BeanShell断言,把响应数据中的JSON跟数据库中的记录对比
- jmeter使用BeanShell Sampler测试自己写的java接口(一)
- Jmeter(三十九)_Beanshell脚本断言Mock接口
- jmeter bean shell断言加密的响应信息(加密接口测试二)
- 使用jmeter做接口测试,怎么验证、核对响应结果中json的内容?
- Jmeter使用BeanShell 断言进行判断
- jmeter bean shell断言加密的响应信息(加密接口测试二)
- jmeter使用BeanShell断言
- 【Jmeter】BeanShell断言--数据解析&数据库对比校验
- jmeter学习指南之响应断言和beanshell断言
- JMeter中BeanShell断言使用一
- Jmeter响应断言的使用
- jmeter使用BeanShell Sampler测试自己写的java接口(二)
- jmeter中beanshell断言的使用
- Jmeter 使用正则表达式提取响应内容,并在后面的接口中使用
- JMeter 检查点之响应断言(Response Assertion)