1. 程式人生 > 其它 >Jmeter常用邏輯控制器及csv引數化

Jmeter常用邏輯控制器及csv引數化

1、簡單控制器

作用:用來組合取樣器和其他邏輯控制器,可理解為分組分步依次執行

建立簡單控制器,路徑:執行緒組-->新增-->邏輯控制器-->簡單控制器

 

 

新增完控制器之後,可在控制器中加入取樣器之HTTP請求

 

 

 

行簡單控制器,執行後可看到,新增的每個HTTP請求從上至下依次執行

 

 

 

 拓展:

執行緒數1,迴圈1,執行後每個請求執行1次;

執行緒數2,迴圈1,執行後每個請求執行2次,在執行下一個請求;

執行緒數1,迴圈2,執行後每個請求執行一次後,進行下一個迴圈執行,迴圈2次;

 

 

 

 

2.隨機控制器

在該控制器下所有請求中隨機選擇一個請求進行執行

 

新建隨機控制器,路徑:執行緒組-->新增-->邏輯控制器-->隨機控制器

 

 

 

在控制器下新增幾個HTTP請求,並執行,執行結果:是隨機讀取某一個執行的,並不是全部執行。

如下圖:

 

 

 

若隨機控制器下包含了其他控制器,未勾選【忽略子控制器塊】如果隨機到了控制器,就會執行整個控制器

 

 

 

 

3.隨機順序控制器

該控制器下的子節點全部執行,但順序是隨機的。

新建隨機順序控制器,路徑:執行緒組-->新增-->邏輯控制器-->隨機順序控制器

 

 

 

 

 

 

4.僅一次控制器

在多執行緒迴圈的時候,將使其子節點下的取樣器請求只執行一次(當僅執行緒組為1的情況下生效,不管迴圈次數設定為多少,都只執行一次),只對次數做限制,不對執行緒組做限制

 

 

執行緒組為1,迴圈次數為5,執行1次

 

 

 

 

 

 

 執行緒組為5,迴圈次數為5,執行5次

 

 

 

 

 

 

 5.switch控制器

通過給該控制器中的value賦值,來指定執行哪個取樣器

有兩種賦值方式:

第一種是數值,Switch控制器下的子節點從0開始計數,通過指定子節點所在的數值來確定執行哪個元素。

第二種是直接指定子元素的名稱,比如取樣器的Name來進行匹配。當指定的名稱不存在時,不執行任何元素。

當Value為空時,預設執行第1個子節點元素。 

 

 

 設定直接指定子元素的名稱,比如取樣器的Name來進行匹配

 

 

 執行結果

 

 

 

value為空

 

 

 執行結果(預設預設執行switch控制器下的第一個請求)

 

 

 

switch value 為1,執行switch控制器下的第2個請求(因為從0開始計數)

 

 

 

 

 

 switch value 為8,執行switch控制器下的第1個請求(因為從0開始計數,超出範圍,預設執行第一個)

 

 

 

 

 

 

6.ForEach控制器

ForEach Controller需要配合‘使用者定義的變數’來使用,作用是引數化

 

新增使用者自定義變數

 

 

 

 

 

 

新增ForEach控制器

 

 

 

輸入變數字首:變數的字首;如要使用的變數為name1,則需要填name。

開始迴圈欄位(不包含):從X-1號的變數開始,X為第幾個變數;如填0,實際從第一個開始。

結束迴圈欄位(含):到X+1的變數結束,X為第幾個變數;如填4,實際第4個不會被使用,只會到第3個。

輸出變數名稱:將要用來使用的變數名

數字之前加上”_”:使用者定義的變數有沒有下劃線分隔編號,可加可不加,若加了,在使用者定義的變數中也需要加上”_”變為”name_1”;

 

新增取值器需注意,路徑最後的取值要加上${vname}

 

 

 

執行結果如下圖

 

 

 

 7.runtime控制器

用於控制該控制器下的取樣器/控制器的執行時間

新增runtime控制器

 

 

 

 

 

 

 

 

 

 

8.If控制器

根據判斷條件決定是否執行該控制器內的請求,如果是字串比較條件,引數和字串 都需要加引號

新增if控制器

 

 

 

 

 

 使用函式助手新增IF條件,路徑:Tools--->函式助手對話方塊

 

 

 通過【選擇一個功能】找到要使用的函式,然後在【表示式評估】中寫入需要使用的等式,點選【生成】即可得到一個完整的表示式(可藉助__groovy這兩個函式)

例如在函式助手中生成istrue==1的表示式

 

 

 將生成的表示式拷貝,貼到if控制器的expression的輸入框中

 

將公式中的值要設定為變數,需要用到取樣器,將取樣器放在if控制器前面

 

 

 

 

 

 新增指令碼vars.put("istrue","1");----將istrue變數設定為1

ars即JMeterVariables,操作jmeter變數,這個變數實際引用了JMeter執行緒中的區域性變數容器(本質上是Map),常用方法:

  • vars.get(String key):從jmeter中獲得變數值;
  • vars.put(String key,String value):資料存到jmeter變數中;

 

 

 新增好取樣器後,if控制器中的語句因為是字串比較,所以要加上引號,要調整為${__groovy("${istrue}"=="1",)}

 

 

 

執行

 

 

 

9.While控制器

Condition (function or variable) :條件(函式或變數)。條件為 Flase 的時候,才會跳出 While 迴圈,否則一直執行 While 控制器下的樣例。

空白:最後一個示例迴圈失敗時退出迴圈

最後一個值:最後一個示例迴圈失敗時退出迴圈。 如果之前的最後一個示例只是迴圈失敗,不進入迴圈。

否則:退出時(或不輸入)迴圈條件等於字串“ 假 

 

 

 第一個請求執行失敗,執行結果:第一個請求執行失敗,後續請求繼續執行且一直迴圈執行

 

 

最後一個請求執行失敗,執行結果:最後一個請求執行失敗,後續請求不再迴圈執行,直接跳出

 

 

 while條件值為LAST

 

 

While 控制器下最後一個取樣器執行失敗, 跳出迴圈

 

 

While控制器前一個樣例執行失敗,就不會進入While迴圈進行執行下面的子節點

 

 

 

11、CSV 資料檔案設定

本地新建csv檔案

 

 

 新增一個CSV 資料檔案

 

 

 

 

匯入到CSV 資料檔案設定

 

 

設定CSV 資料檔案設定

用notepad++開啟csv檔案,將首行拷貝出來

 

 

 

 設定“通過學生姓名查詢(引數化)”表,欄位引數化使用${},將引數名填入,路徑處請注意:${path}${name} 之間可以不加/

 

 

設定迴圈次數為5,執行  4條資料,迴圈5次,最後一條資料會執行第一條資料。