未經作者允許,禁止轉載!!!
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}不相等則運行下面的代碼。
區區幾行bean shell快速解決問題