Jmeter之BeanShell斷言使用


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 訪問當前采樣

2.BeanShell 斷言使用實例

  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;
}

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM