Jmeter有哪些Bean Shell
定时器: BeanShell Timer
前置处理器:BeanShell PreProcessor
采样器: BeanShell Sampler
后置处理器:BeanShell PostProcessor
断言: BeanShell断言
监听器: BeanShell Listener
下面先讲一讲 采样器:BeanShell Sampler的用法
在BeanShell Sampler里面写入vars.get和vars.put
查看结果树:
在BeanShell Sampler里面添加方法
查看结果树
引入java文件:
在BeanShell Sampler里面引入java文件
查看结果树
引入class文件:
查看结果树
给自定义的变量赋值
Bean Shell的脚本将test的值传给us
HTTP Request 使用参数化引用us的值
查看结果树:
BeanShell PostProcessor提取json数据
需求:提取sample返回json数据中所有name字段值,返回的json格式如下:
{“body”:{“apps”:[{“name”:”111”},{“name”:”222”}]}}
jmeter中添加后置处理器BeanShell PostProcessor
import org.json.*; String response_data = prev.getResponseDataAsString(); JSONObject data_obj = new JSONObject(response_data); String apps_str = data_obj.get("body").get("apps").toString(); JSONArray apps_array = new JSONArray(apps_str); String[] result = new String[apps_array.length()]; for(int i=0;i<apps_array.length();i++){ JSONObject app_obj = new JSONObject(apps_array.get(i).toString()); String name = app_obj.get("name").toString(); result[i] = name; } vars.put("result", Arrays.toString(result));
jmeter BeanShell断言-----两个变量之间的断言对比
在jmeter的中,断言没法对两个变量的进行对比后判断,只能使用Bean Shell断言来进行,总是有人来问怎么写呢。这里写一个简单的实例吧。
需求:
获取某个用户对应的设备个数接口与数据库查询的个数结果进行对比
Bean Shell断言解决方案:
获取某个用户对应的设备个数接口这个普通的Http接口,这里就不就列出了
与Oracle数据库的查询,如下图
先建立JDBC连接配置,进行JDBC查询,然后用正则提取器
再建立Bean Shell断言,如下
这里介绍下。${streamid_matchNr}是jmeter正则个数的统计
if (!"${streamid_matchNr}".equals("${res_1}"))
表示${streamid_matchNr}与${res_1}不相等则运行下面的代码。
转载: