Jmeter有哪些Bean Shellhtml
定時器: BeanShell Timerjava
前置處理器:BeanShell PreProcessorshell
採樣器: BeanShell Sampler數據庫
後置處理器:BeanShell PostProcessorjson
斷言: BeanShell斷言app
監聽器: BeanShell Listenerspa
下面先講一講 採樣器:BeanShell Sampler的用法.net
在BeanShell Sampler裏面寫入vars.get和vars.put3d
查看結果樹:htm
在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的中,斷言無法對兩個變量的進行對比後判斷,只能使用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快速解決問題