jmeter中beanshell的用法小結(jié)
一、什么是Bean Shell
BeanShell是用Java寫成的,一個小型的、免費的、可以下載的、嵌入式的Java源代碼解釋器,具有對象腳本語言特性,非常精簡的解釋器jar文件大小為175k。
BeanShell執(zhí)行標準Java語句和表達式,另外包括一些腳本命令和語法。
官網(wǎng)地址:http://www.BeanShell.org/
二、BeanShell的用法
2.1操作變量:
通過使用Bean shell內(nèi)置對象vars可以對變量進行存取操作
a) vars.get("name"):從jmeter中獲得變量值
b) vars.put("key","value"):數(shù)據(jù)存到j(luò)meter變量中
2.2操作屬性:
通過使用Bean shell內(nèi)置對象props 可以對屬性進行存取操作
a) props.get("START.HMS"); 注:START.HMS為屬性名,在文件jmeter.properties中定義
b) props.put("PROP","12345");
2.3引用外部java文件:
假如我有一個java 源文件,名為:myJava.java,代碼如下:
package demo; public class Myclass { public int add(int a, int b) { return a + b; } }
在bean shell中通過source("代碼路徑")方法引入java,然后調(diào)用方法和java一樣。
運行結(jié)果, 獲取到值:
2.4引用外部class文件:
直接把上例中的myJava.java文件編譯成class文件,用addClassPath("C:\\")方法引入 class文件,在用import導(dǎo)入包及類,然后就可以像java一樣調(diào)用了
2.5引用外部Jar包:
1、在eclipse寫好代碼,然后把該類打成jar包(在工程上點擊右鍵->Export->jar file)將jar包放到j(luò)meter目錄\apache-jmeter-5.3\lib\ext下
或者,在Test Plan的右側(cè)面板最下方直接添加需要引用的jar包,如下圖:
2.重啟jmeter
3.添加個請求,在該請求下添加一個BeanShell PreProcessor
4.在登錄請求接口下使用${encode_username},${encode_password}引用就可以加密登錄了
三、Bean Shell常用內(nèi)置變量
JMeter在它的BeanShell中內(nèi)置了變量,用戶可以通過這些變量與JMeter進行交互,其中主要的變量及其使用方法如下:
log:寫入信息到j(luò)meber.log文件,使用方法:log.info(“This is log info!”);
ctx:該變量引用了當(dāng)前線程的上下文,使用方法可參考:org.apache.jmeter.threads.JMeterContext。
vars - (JMeterVariables):操作jmeter變量,這個變量實際引用了JMeter線程中的局部變量容器(本質(zhì)上是Map),它是測試用例與BeanShell交互的橋梁,常用方法:
- a) vars.get(String key):從jmeter中獲得變量值
- b) vars.put(String key,String value):數(shù)據(jù)存到j(luò)meter變量中
更多方法可參考:org.apache.jmeter.threads.JMeterVariables
props - (JMeterProperties - class java.util.Properties):操作jmeter屬性,該變量引用了JMeter的配置信息,可以獲取Jmeter的屬性,它的使用方法與vars類似,但是只能put進去String類型的值,而不能是一個對象。對應(yīng)于java.util.Properties。
prev - (SampleResult):獲取前面的sample返回的信息,常用方法:
- a) getResponseDataAsString():獲取響應(yīng)信息
- b) getResponseCode() :獲取響應(yīng)code
更多方法可參考:org.apache.jmeter.samplers.SampleResult
sampler - (Sampler):gives access to the current sampler
四、提取json數(shù)據(jù)
需求:提取sample返回json數(shù)據(jù)中所有name字段值,返回的json格式如下:
{“body”:{“apps”:[{“name1”:”111”},{“name2”:”222”}]}}
BeanShell 后置處理程序添加如下代碼:
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));
五、斷言
import txtWrite.*; String response_data = prev.getResponseDataAsString(); String assert_data="科目${num}"; TxtWrite writeData=new TxtWrite(); if(response_data.indexOf(assert_data)!=-1)//請求的response中有包含自定義字符,則斷言結(jié)果為false { Failure=false; String message="${__time(yyyy-MM-dd HH:mm:ss,)} 新建科目【"+assert_data+"】成功"; FailureMessage=message; writeData.contentToTxt("D:/xykyInterfaceAutoTest.log",message); }else { Failure=true; String message="${__time(yyyy-MM-dd HH:mm:ss,)} 新建科目【"+assert_data+"】失敗----------"; String response="本次請求response數(shù)據(jù):"+prev.getResponseDataAsString()+"----------"; String need_assert="需要斷言的數(shù)據(jù):"+assert_data; FailureMessage=message+response+need_assert; writeData.contentToTxt("D:/xykyInterfaceAutoTest.log",message+response+need_assert); }
到此這篇關(guān)于jmeter中beanshell的用法小結(jié)的文章就介紹到這了,更多相關(guān)jmeter beanshell用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Mybatis-Plus最優(yōu)化持久層開發(fā)過程
Mybatis-plus(簡稱MP)是一個Mybatis的增強工具,在mybatis的基礎(chǔ)上只做增強不做改變,提高效率,自動生成單表的CRUD功能,這篇文章主要介紹了Mybatis-Plus最優(yōu)化持久層開發(fā),需要的朋友可以參考下2024-07-07mybatis-plus 實現(xiàn)分頁查詢的示例代碼
本文介紹了在MyBatis-Plus中實現(xiàn)分頁查詢,包括引入依賴、配置分頁插件、使用分頁查詢以及在控制器中調(diào)用分頁查詢的方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-11-11Spring框架花式創(chuàng)建Bean的n種方法(小結(jié))
這篇文章主要介紹了Spring框架花式創(chuàng)建Bean的n種方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03詳解poi+springmvc+springjdbc導(dǎo)入導(dǎo)出excel實例
本篇文章主要介紹了poi+springmvc+springjdbc導(dǎo)入導(dǎo)出excel實例,非常具有實用價值,需要的朋友可以參考下。2017-01-01Centos 7 安裝 OpenJDK 11 兩種方式及問題小結(jié)
這篇文章主要介紹了Centos 7 安裝 OpenJDK 11 兩種方式,第一種方式使用yum安裝,第二種方式使用tar解壓安裝,每種方法給大家介紹的非常詳細,需要的朋友可以參考下2021-09-09