目錄
前言:
Beanshell 介紹
常用內(nèi)置變量
log
vars 和 props
vars 常用方法:
props 常用方法:
prev
綜合運(yùn)用
前言:
JMeter 是一個(gè)廣泛使用的性能測(cè)試工具,它支持許多不同的測(cè)試技術(shù)和方法。其中,Beanshell 是一種常用的腳本語(yǔ)言,它可以用來(lái)自動(dòng)化測(cè)試腳本的執(zhí)行和參數(shù)化測(cè)試。
Beanshell 介紹
Beanshell 是一種輕量級(jí)的 Java 腳本,純 Java 編寫的,能夠動(dòng)態(tài)的執(zhí)行標(biāo)準(zhǔn) java 語(yǔ)法及一些擴(kuò)展腳本語(yǔ)法,類似于 javaScript,在工作中可能用的多的就是:
-
Beanshell 取樣器:跟 Http 取樣器并列
-
Beanshell 前置處理器:一般放在 Http 請(qǐng)求下,在請(qǐng)求后處理一些數(shù)據(jù)
-
Beanshell 后置處理器:一般放在 Http 請(qǐng)求下,在請(qǐng)求前處理一些數(shù)據(jù)
-
Beanshell 斷言:一般放在 Http 請(qǐng)求下,做一些復(fù)雜斷言
常用內(nèi)置變量
log
打印日志,我們常??梢杂脕?lái)調(diào)試問題,使用舉例
- log.info("你想打印的內(nèi)容")
- log.error("你想打印的錯(cuò)誤內(nèi)容")
vars 和 props
區(qū)別:
- vars 只能在當(dāng)前線程內(nèi)使用,props 可以跨線程組使用
- vars 只能保存 String 或者 Object,props 是 Hashtable 對(duì)象
vars 常用方法:
- vars.get(String key):從 jmeter 中獲得變量值;
- vars.put(String key,String value):數(shù)據(jù)存到 jmeter 變量中;
props 常用方法:
- props.put("token","ertyuiahdg127423g4hjdkacnb");
- props.get("token");
prev
獲取前面的 sample 返回的信息,常用方法:
- prev.getResponseDataAsString():獲取響應(yīng)信息
- prev.getResponseCode() :獲取響應(yīng) code
綜合運(yùn)用
一般來(lái)說(shuō),我們接口返回都是標(biāo)準(zhǔn)的 json 格式數(shù)據(jù),例如:
{"datas":[
{"name":"張三","age":18,"address":"河北","phone":"1311111111"},
{"name":"李四","age":28,"address":"北京","phone":"13222222222"},
{"name":"王五","age":23,"address":"江蘇","phone":"13333333333"},
{"name":"趙六","age":32,"address":"湖北","phone":"13444444444"},
{"name":"瑪麗","age":45,"address":"美國(guó)","phone":"13555555555"},
{"name":"亨利","age":39,"address":"法國(guó)","phone":"13666666666"}]
}
那我就需要使用一些專門處理 json 數(shù)據(jù)的 jar 包來(lái)對(duì)數(shù)據(jù)進(jìn)行二次加工,這里舉例使用 json.jar,具體代碼如下:
//從json.jar導(dǎo)入所需要的類
import org.json.JSONObject;
import org.json.JSONArray;
//從變量獲取數(shù)據(jù),因?yàn)槲以谟脩糇远x變量設(shè)置的上面的json數(shù)據(jù)
String response = vars.get("response");
// 打印日志看看是否取到
log.info("看看response:"+response);
//String reponse = prev.getResponseDataAsString();//如果從接口取,可以這么寫
// String 轉(zhuǎn)化成JSONObject
JSONObject resObj = new JSONObject(response);
// 去除datas下的數(shù)據(jù)
JSONArray resArray = resObj.get("datas");
log.info("取出resArray:"+resArray.toString());//注意,需要把a(bǔ)rray轉(zhuǎn)成String才能打印
// 遍歷取出年齡>30的數(shù)據(jù),并存入新的JSONObject
JSONObject newObj = new JSONObject();//定義一個(gè)空的JSONObject
for(JSONObject item:resArray){
int age = item.get("age");//取出age
if(age>30){
String name = item.get("name");//取出name作為key
newObj.put(name,age);
}
}
// 打印下取出的數(shù)據(jù)正確與否
log.info("大于30的人:"+newObj.toString());
// 存入變量,供下面接口使用
vars.put("newObj",newObj.toString());
??作為一位過(guò)來(lái)人也是希望大家少走一些彎路
在這里我給大家分享一些自動(dòng)化測(cè)試前進(jìn)之路的必須品,希望能對(duì)你帶來(lái)幫助。
(軟件測(cè)試相關(guān)資料,自動(dòng)化測(cè)試相關(guān)資料,技術(shù)問題答疑等等)
相信能使你更好的進(jìn)步!
點(diǎn)擊下方小卡片文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-602824.html
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-602824.html
到了這里,關(guān)于Jmeter 中 Beanshell 的使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!