jmeter Bean Shell的使用(一)


未經作者允許,禁止轉載!!!

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快速解決問題

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM