1. 程式人生 > >使用Jmeter的BeanShell Sampler生成需要的引數

使用Jmeter的BeanShell Sampler生成需要的引數

 在Jmeter中個,有時候需要使用一些資料,但是通過jmeter自身或者通過關聯無法得到,這個時候,可以使用Jmeter的BeanShell Sampler,然後使用BeanShell指令碼語言生成需要的資料,舉例如下:

------以下程式碼是生成當前時間1小時之前的時間

import bsh.EvalError;
import bsh.Interpreter;
import java.text.SimpleDateFormat;
import java.util.Date;
public static String dateAdd(String d) {
       if (d == null)
          return null;
       SimpleDateFormat format = new SimpleDateFormat("HHmmss");
       Date date = null;
       try {
          date = format.parse(d);
       } catch (Exception ex) {
       }
   
      
       long time = (date.getTime() / 1000);
       time = time - 1 * 3600;// 60 * 60 ;
       Date result = new Date();
       result.setTime(time * 1000);
      
       if (result != null) {
    String stime=format.format(result);
    System.out.print(stime);//可在啟動jmeter的時候啟動的那個控制檯中看到輸出的引數。

vars.put("time", stime);//把生成的結果放入vars中,指令碼中直接用${time}可以獲得stime的值。
                                 return stime;//需要return,否則會報錯,暫時未研究為什麼。

       }
       return null;
    }
dateAdd("${__time(HHmmss,)}");//${__time(HHmmss,)}函式功能:以()中的格式獲得當前時間

補充:

如import java.text.SimpleDateFormat;
import java.util.Date;


此類import的包,可以根據java得知。

Response Assertion:

pattern to Test:中的表示式在response data中匹配到,return true;反之,return false;

JMeter在它的BeanShell中內建了變數,使用者可以通過這些變數與JMeter進行互動,其中主要的變數及其使用方法如下(JMeter文件並沒有對該部分內容進行詳細講解,這裡也會說明他們分別對應於JavaDoc中的哪個類):

  • vars:這個變數實際引用了JMeter執行緒中的區域性變數容器(本質上是Map),因此可以通過put和get方法訪問JMeter中的變數。這個變數是所有內建變數中最有用的,它是測試用例與BeanShell互動的橋樑。對應於org.apache.jmeter.threads.JMeterVariables
  • props:該變數引用了JMeter的配置資訊,它的使用方法與vars類似,但是隻能put進去String型別的值,而不能是一個物件。對應於java.util.Properties。
  • ctx:該變數引用了當前執行緒的上下文,理論上通過這個東西我們幾乎可以控制當前執行緒相關的一切,不過這要求使用者非常熟悉JMeter的原始碼。對應於org.apache.jmeter.threads.JMeterContext。
百度文庫提供:如果網頁上有登陸頁面和身份驗證,怎樣去測試? 

JMeter基礎入門之必備 學習