JSR223 和Beashell 使用方法


A.JSR223 是基於 groovy 的語法,所以先了解下常用 JSR223 的方法

1. log:用來記錄日志文件,寫入到 jmeber.log 文件,使用方法:log.info(“This is log info!”);

2. ctx ( JmeterContext ) 通 過 它 來 訪 問 context , 使 用 方 法 可 參 考 : org.apache.jmeter.threads.JMeterContext。

3. vars - (JMeterVariables):操作 jmeter 變量,提供讀取/寫入訪問變量的方法。這個 變量實際引用了 JMeter 線程中的局部變量容器(本質上是 Map),它是測試用例與 BeanShell 交互的橋梁,常用方法: a) vars.get(String key):從 jmeter 中獲得變量值 b) vars.put(String key,String value):數據存到 jmeter 變量中

4. 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");

5. prev - (SampleResult):獲取前面的 sample 采樣的結果,常用方法: a) getResponseDataAsString():獲取響應信息 b) getResponseCode() :獲取響應 code 我本地開發一個接口進行演示,看下我的請求

B.Beashell:

正則表達式獲取的值存在本地:

代碼如下:

 

 

 

String getdata = vars.get("lastmileTrackingNumber1");
String filename = "C:/Desktop/data/invioce/lastmileTrackingNumber50.txt";
FileWriter writer;
        try {
            writer = new FileWriter(filename,true);
            writer.write(getdata);
            writer.write("\r\n");
            writer.flush();
            writer.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

C.那其他接口如何引用這個值呢?我們需要借助於 csv data 這個插件

 

 

 

 我們需要用到文件的 lastmileTrackingNumber值的時候,就用 lastmileTrackingNumber去引用即可,見 圖中插件配置第三行,變量名命名;

 

 

 元件配置解釋:

1、Filename:文件名,指保存信息的文件目錄,可以相對或者絕對路 徑,可通過 browse 按鈕添加引用的文件

2、File encoding:csv 文件編碼,可以不填,一般為 UTF-8

3、Variable Names(comma-delimited):變量名稱,因為我們只有一 個 lastmileTrackingNumber參數,變量使用格式 ${name},多個參數也支持,參數順序 跟文件里的列相對應,比如第一個參數對應第一列,用逗號分隔,第 二個參數對應第二列

4.ignore first line:按照字面意思理解即可,就是第一行要不要 取值的意思

5. Delimiter(use '\t for tab'):定義分隔符為',',若參數化文 檔中有多列,則每列間用逗號分隔,跟上文第 3 條對應一起理解

6. 是否允許引用數據。默認設置為 false。例如數據樣式為:"101-005-98536","57" 時,此處需設置為 true,一般默認為 false 即 可,這個一般都是默認;

7. Recycle on EOF?:是否循環讀取參數文件內容。默認設置為 true。 設置為 true 時,當已經讀取完參數文件內的測試用例數據,還需要 繼續獲取用例數據時,此時會循環讀取參數文件數據;設置為 false 時,若已至文件末尾,則不再繼續讀取測試數據。

8. Sotp thread on EOF?:當讀取到參數文件末尾時,是否停止讀取 線程。默認為 false。當 Recycle on EOF? 設置為 true 時,此項 不起任何作用。當且僅當 Recycle on EOF? 為 false 時,此項配置 才生效;

  舉例理解:

    a. 當 Recycle on EOF 選擇 true 時,Stop thread on EOF 選擇 true 和 false 無任何意義,通俗的講,在前面控制了不停的循環讀 取,后面再來讓 stop 或 run 沒有任何意義

     b. 當 Recycle on EOF 選擇 false 時,Stop thread on EOF 選擇 true,線程 4 個,參數 3 個,那么只會請求 3 次

    c. 當 Recycle on EOF 選擇 false 時,Stop thread on EOF 選擇 flase,線程 4 個,參數 3 個,那么會請求 4 次,但第 4 次沒有參數 可取,不讓循環,所以第 4 次請求錯誤

9. Sharing mode:共享模式,即參數文件變量作用域。主要有以下 幾種方式:

  All threads:當前測試計划中的所有線程組中的所有的線程均有效。

  Current thread group:當前的線程組中的線程有效。

  Current thread:當前線程有效。

  舉例理解:

      1.All threads:計划中所有線程,假如說有線程 1 到線程 n (n>1),線程 1 取了一次值后,線程 2 取值時,取到的是 csv 文件中 的下一行,即與線程 1 取的不是同一行。

      2.Current thread group:當前線程組,假設有線程組 A、線程組 B, A 組內有線程 A1 到線程 An,線程組 B 內有線程 B1 到線程 Bn。取之 情況是:線程 A1 取到了第 1 行,線程 A2 取第 2 行,現在 B1 取第 1 行,線程 B2 取第 2 行。

      3.Current thread:當前線程。假設測試計划內有線程 1 到線程 n (n>1),則線程 1 取了第 1 行,線程 2 也取第 1 行。

 


免責聲明!

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



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