天天看點

jmeter斷言-BeanShell斷言

1.什麼是BeanShell斷言?

      BeanShell斷言可以使用beanshell腳本來執行斷言檢查,可以用于更複雜的個性化需求,使用更靈活,功能更強大,但是要能夠熟練使用beanshell腳本。

      在這裡除了可以使用beanshell的内置變量外,主要通過Failure和FailureMessage來設定斷言結果。

Failure = false;-----表示斷言成功,

FailureMessage = "……"; ----自定義的成功資訊

Failure = true;-----表示斷言失敗,

FailureMessage = "……";-----自定義的失敗資訊。

org.json.jar下載下傳位址

連結: https://pan.baidu.com/s/1bIwY5N81JVx_Z_aM0UP76A 提取碼: 6jcz

BeanShell斷言界面如下:

jmeter斷言-BeanShell斷言

Name:斷言的名字(可以用一個比較容易了解和分辨的名稱)

Comments:注釋(對這個斷言進行一個解釋,備注)

Reset bsh.interpreter before each call:在每次調用Bean Shell之前重置bsh.interpreter類(bsh.interpreter是Bean Shell腳本語言的一種類,也可以了解為一種解析器)

Parameters(String Parameters and String []bsh.args):String參數(String []bsh.args是主類main函數的形式參數,是一個String 對象數組,可以用來擷取指令行使用者輸入進去的參數)

Script file:腳本檔案(可以填入腳本檔案路徑)

Script(see below for variables that are defined):參照下文定義的變量(使腳本檔案參照定義的變量來運作)

2.示例

添加斷言-BeanShell斷言

添加監聽器-斷言結果

import org.json.*;
//擷取上一個請求的傳回值
String response = prev.getResponseDataAsString();
//将傳回值轉換為json
JSONObject responseJson = new JSONObject(response);
//擷取響應中的responseMessage
String message = responseJson.getString("message");
log.info("message的值:" + message);

//獲得内置變量$recnum的值
String recnum = vars.get("recnum");


if (recnum.equals("310000026") || recnum.equals("310000028")) {
            if (message.equals("同一學員教育訓練時段已存在")) {
                Failure = false;
            } else {
                Failure = true;//失敗
                FailureMessage = "message:" + message;//失敗原因
            }

} else {
            if ("".equals(message)) {
                Failure = false;
            } else {
                Failure = true;//失敗
                FailureMessage = "message:" + message;//失敗原因
            }
}

log.info("recnum:" + recnum+"*Failure"+Failure);
           

斷言結果

jmeter斷言-BeanShell斷言

3.常用内置變量

JMeter在它的BeanShell中内置了變量,使用者可以通過這些變量與JMeter進行互動,其中主要的變量及其使用方法如下:

log:用來記錄日志檔案,寫入到jmeber.log檔案,使用方法:log.info(“This is log info!”);

ctx(JmeterContext)通過它來通路context,使用方法可參考:org.apache.jmeter.threads.JMeterContext。

vars - (JMeterVariables):操作jmeter變量,提供讀取/寫入通路變量的方法。這個變量實際引用了JMeter線程中的局部變量容器(本質上是Map),它是測試用例與BeanShell互動的橋梁,常用方法:

    a) vars.get(String key):從jmeter中獲得變量值

    b) vars.put(String key,String value):資料存到jmeter變量中

              c) vars.putObject("OBJ1",new Object());

    更多方法可參考:org.apache.jmeter.threads.JMeterVariables

props - (JMeterProperties - class Java.util.Properties):操作jmeter屬性,該變量引用了JMeter的配置資訊,可以擷取Jmeter的屬性,它的使用方法與vars類似,但是隻能put進去String類型的值,而不能是一個對象。對應于java.util.Properties。 

    a) props.get("START.HMS");  注:START.HMS為屬性名,在檔案jmeter.properties中定義 

    b) props.put("PROP1","1234"); 

prev - (SampleResult):擷取前面的sample采樣的結果,常用方法:

    a) getResponseDataAsString():擷取響應資訊

    b) getResponseCode() :擷取響應code

    更多方法可參考:org.apache.jmeter.samplers.SampleResult

繼續閱讀