1.Bean Shell常用內置變量
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
-
sampler - (Sampler):gives access to the current sampler 訪問當前采樣
BeanShell斷言可以使用beanshell腳本來執行斷言檢查,可以用於更復雜的個性化需求,使用更靈活,功能更強大,但是要能夠熟練使用beanshell腳本。
這里除了可以使用beanshell的內置變量外,主要通過Failure和FailureMessage來設置斷言結果。
Failure = false;-----表示斷言成功, FailureMessage = "……"; ----自定義的成功信息 Failure = true;-----表示斷言失敗, FailureMessage = "……";-----自定義的失敗信息。
實例:
String responseData = prev.getResponseDataAsString(); //獲取請求的返回結果 String code = prev.getResponseCode(); //獲取請求的返回code碼 String requestData = prev.getSamplerData(); //獲取發出的請求數據 if( !code.equals("200") ){ //如果請求的相應狀態碼不是200 FailureMessage = "響應狀態碼不是:200,而是:" + code + ",請求失敗!"; //自定義的失敗信息 log.info(FailureMessage); //在日志里打印失敗的信息 log.info("Request: " + requestData); //在日志里面打印失敗的請求體 Failure = true; //表示斷言失敗 } else if(!responseData.contains("\"errCode\":0")){ FailureMessage = "響應body中errCode不是:0,響應body為:" + responseData; log.info(FailureMessage); log.info("Request: " + requestData); Failure = true; }