新公司要编写jmeter脚本,Java丢掉N久也不想捡起来的我第一时间寻找其他语言编写的方法,千辛万苦找到了jython,还没开心呢,写完登录和退出脚本问题就来了,jython已经停更多年,很多功能和现在并不接轨了,只能扭头乖乖捡起java。好在jmeter脚本需要的Java包主要只有两个,一个JSONArray一个JsonObject。为了加深印象顺带捡起丢了许久未更新的blog开始记随笔了,目标是一周内熟悉语法,能独立编写beanshell。
基本获取jmeter响应参数都可以套用下面的模板
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; //获取上一个请求的返回值 String json=prev.getResponseDataAsString(); //将返回值转换为json JSONObject jso = JSON.parseObject(json); //获取data JSONObject data = jso.getJSONObject("data"); //获取token //也可以写作String token = jso.getJSONObject("data").getString("token"); String token = data.getString("token"); log.info("token"); //使用vars.put()方法储存变量token vars.put("token",token);
在后面的其他接口中如何需要使用变量token,可以使用${token}来获取变量的值;
变量储存好后,在需要断言的接口后面添加BeanShell断言,使用Failrue来标识断言失败,FailureMessage标示断言失败的原因,如:
//使用vars.get()方法获取变量的值 String token= vars.get("token"); if(!message.equals("")) { Failure = true; FailureMessage = "规则解析失败"; }else{ FailureMessage = "规则解析成功"; }
或者直接在需要断言的接口中进行断言操作
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; //获取上一个请求的返回值 String json=prev.getResponseDataAsString(); //将返回值转换为json JSONObject jso = JSON.parseObject(json); //获取data JSONObject data = jso.getJSONObject("data"); //获取token //也可以写作String token = jso.getJSONObject("data").getString("token"); String token = data.getString("token"); log.info("token"); if(!message.equals("")) { Failure = true; FailureMessage = "规则解析失败"; }else{ FailureMessage = "规则解析成功"; }