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次,最後一條資料會執行第一條資料。