jmeter學習指南之Beanshell Sampler 常用方法

testingbang發表於2019-08-20

JMeter 中可以使用 Beanshell Sampler 編寫一些簡單的指令碼,實現更多功能。
1、Beanshell
Beanshell 是一種輕量級的 Java 指令碼,純 Java 編寫的,能夠動態的執行標準 java 語法及一些擴充套件指令碼語法,類似於 javaScript 和 perl。

2、內建變數
Beanshell Sampler 中除了可以使用標準 java 語法之外,還有一些定義好的變數,可以直接使用。

SampleResult
ResponseCode,
ResponseMessage
IsSuccess
Label
FileName
ctx
vars
props
log
下面我按使用頻率,分別講一下最常用的幾種變數。

3、log
用於列印日誌,最常用,也最簡單;
列印在 jmeter.log 中,可以設定列印級別,可以列印字串、變數等。
使用方法:

1、列印 info 形式的普通字串日誌:
log.info("hello world");  輸出 hello world

2、拼接字串和變數 (其中 token 是 jmeter 區域性變數):
log.info("hello world" + "${token}");  輸出 hello world 和 token 變數的拼接結果

3、列印自定義變數
str = "12345";
log.info(str);  輸出 12345

4、列印 error 形式的普通字串日誌:
log.info("hihihi");
log.error("aaaaa");
輸出的區別:
2018-12-27 19:05:13,158 INFO o.a.j.u.BeanShellTestElement: hihihi
2018-12-27 19:05:13,158 ERROR o.a.j.u.BeanShellTestElement: aaaaa

print() 列印日誌
在 beanshell 中還可以使用 print() 函式來列印日誌,輸出字串等資訊;

print() 是在控制檯中輸出資訊,log() 預設是在 jmeter.log 中輸出資訊。

4、vars
用於存取 jmeter 區域性變數,很常用,一定要掌握;
通常用於存取字串內容,也可以存取物件;
vars.get()
String mykey = vars.get("keyname"); 
獲取變數名為 keyname 的值,並儲存在 mykey 中。

vars.put()
vars.put("keyname","value");  
把變數 keyname(值為 value)儲存到 jmeter 變數中。

vars.putObject("OBJname",new Object()); 
把一個物件 OBJname 儲存到 jmeter 變數中

vars.remove()
vars.remove("keyname");
從 jmeter 變數中刪除 keyname。

5、props
用於存取 jmeter 全域性的靜態變數;
其中的 key 和 value 均是字串形式;
ymd = props.get("START.YMD");
獲取屬性 START.YMD 的值(指令碼啟動日期)。

props.put("PROP1","1234");
把 1234 存入全域性屬性 PROP1 中。

6、ctx
當前執行緒的上下文資訊;
使用舉例:

ctx.getCurrentSampler(); 獲取當前 sampler 請求

ctx.getPreviousSampler(); 獲取前一個 sampler 請求

ctx.getThreadNum(); 獲取當前執行緒的序號,從 0 開始計數

ctx.getThread(); 獲取當前執行緒

ctx.getThreadGroup(); 獲取當前執行緒組

ctx.getProperties(); 獲取所有屬性

ctx.getVariables(); 獲取當前執行緒的所有變數

7、SampleResult
SampleResult.setResponseData(data);
自定義響應資料。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69942496/viewspace-2654225/,如需轉載,請註明出處,否則將追究法律責任。

相關文章