Jmeter函數總結
第一章 前言
第二章 常用函數的介紹
2.1. timeShift函數
2.2. time函數
2.3. groovy函數
第三章 常用用法
3.1. Jmeter讀取Excel
1) 添加線程組
2) 添加配置元件--》選擇CSV Data Set Config
3) 添加--》取樣器--》選擇BeanShell Sampler,使用vars.get方法擷取Excel的值
4) 添加--》取樣器--》選擇Debug Sampler,以便後面檢視是否正常的擷取了Excel中的資料
5) 添加http請求,将Excel中擷取的資料作為參數傳遞
6) 添加一個檢視結果樹,以檢視執行之後的結果
7) 設定線程組
8) 遇到問題
3.2. Jmeter讀取txt
1) 添加線程組
2) 添加配置元件--》選擇CSV Data Set Config
3) 添加--》取樣器--》選擇BeanShell Sampler,使用vars.get方法擷取Excel的值
4) 添加--》取樣器--》選擇Debug Sampler,以便後面檢視是否正常的擷取了Excel中的資料
5) 添加http請求,将Excel中擷取的資料作為參數傳遞
6) 添加一個檢視結果樹,以檢視執行之後的結果、
7) 設定線程組
第四章 常見問題
4.1. Jmeter請求參數時,中文出現亂碼
第一章 前言
近期工作過程中使用Jmeter函數較多,初步使用,遇到問題隻能依賴度娘解決,近期抽時間将遇到的問題梳理了一下,并附上了解決方法,希望可以對大家有所幫助。
第二章 常用函數的介紹
2.1. timeShift函數
背景:近期測試的一些業務的接口的傳參需要傳入與時間有關的一些數值
(比如需要毫秒級别的時間戳,比如1660270555043,對應的時間2022-08-12 10:15:55 ),
(再比如20220812101555848 對應的是2022-08-12 10:15:55),
使用 timeShift函數可以構造最新時間和指定時間戳。
示例:
場景 | 函數 | 結果 |
目前時間時間戳 (毫秒級) | ${__timeShift(,,,,)} | 1660270835790 |
2小時前時間戳 (毫秒級) | ${__timeShift(,,-PT2H,,)} | 1660263761872 |
指定格式, 輸出目前時間 | ${__timeShift(yyyyMMddHHmmssSSS,,,,)} | 20220812101555848 |
指定格式, 輸出2小時前時間 | ${__timeShift(yyyyMMddHHmmssSSS,,-PT2H,,)} | 20220812101555848 |
展開:
點選[函數助手/Function Helper]系統彈出函數助手頁面,下拉選擇timeShift
格式 - 将顯示建立日期的格式。如果該值未被傳遞,則以毫秒為機關建立日期。
比如:
傳入yyyyMMddHHmmssSSS,輸出20220812101555848
傳入yyyy-MM-dd HH:mm:ss 輸出 2022-08-12 10:33:42
日期 - 這是日期值。用于如果要通過添加或減去特定天數,小時或分鐘來建立特定日期的情況。如果參數值未通過,則使用目前日期。(沒用對,自己打算再找找度娘)
移位 - 表示要從日期參數的值中添加或減去多少天,幾小時或幾分鐘。如果該值未被傳遞,則不會将任何值減去或添加到日期參數的值中。不使用符号時為增加,使用+ -号實作加減
“P1DT2H4M5S” 解析為“添加1天2小時4分鐘5秒”
“P-6H3M”解析為“-6小時+3分鐘”
“-P6H3M”解析為“-6小時-3分鐘”
“-P-6H + 3M”解析為“+6小時和-3分鐘”
“P1d” 解析為增加一天
“PT2H” 解析為增加兩小時
“PT30m”解析為增加30分鐘
“PT40S”解析為增加40秒
“P1dT2H30m40s”解析為增加一天兩小時三十分鐘四十秒
區域設定 - 設定建立日期的顯示語言。不是必填項
變量 - 建立日期的值将被配置設定給的變量的名稱。不是必填項
2.2 time函數
time函數同timeShirt函數用法大緻相同。
示例:
場景 | 函數 | 結果 |
目前時間時間戳 (毫秒級) | ${__time(,)} | 1660272941726 |
目前時間時間戳 (秒級) | ${__time(/1000,) | 1660272952 |
指定時間格式 | ${__time(yyyy-MM-dd,)} | 2022-08-12 |
展開:
點選[函數助手/Function Helper]系統彈出函數助手頁面,下拉選擇time函數

格式 - 将顯示建立日期的格式。如果該值未被傳遞,則以毫秒為機關建立日期。
比如:
傳入yyyyMMddHHmmssSSS,輸出20220812101555848
傳入yyyy-MM-dd HH:mm:ss 輸出 2022-08-12 10:33:42
變量 - 建立日期的值将被配置設定給的變量的名稱。不是必填項
time函數與timeShift函數差別:
*time函數即可以生成秒級别、也可以毫秒級别的時間戳,timeShift函數僅可以生成毫秒級别的時間戳;
*timeShift函數比time函數多了幾項傳參,比如可以傳入移位參數,構造幾天前/幾小時/幾分鐘對應時間值
2.3. groovy函數
問題:我需要一個傳參,将指定格式的時間轉為時間戳(毫秒級别),試了好幾個方法都不太合适,最後使用了同僚提供的groovy函數
示例:比如将startDate的日期轉為時間戳
指定日期 | 轉為時間戳 | 輸出 |
startDate=2022-07-19 12:30:10 | ${__groovy(new java.text.SimpleDateFormat('yyyy-MM-dd HH:mm:ss').parse('${startDate}').getTime(),)} | startTime=1658205010000 |
第三章 常用用法
3.1. Jmeter讀取Excel
背景:近期需要使用接口構造100條資料,就計劃使用excel存儲資料,然後将每次讀取的資料作為參數傳遞給接口。
步驟:
1) 添加線程組
2) 添加配置元件--》選擇CSV Data Set Config
附上Excel表格
3) 添加--》取樣器--》選擇BeanShell Sampler,使用vars.get方法擷取Excel的值
4) 添加--》取樣器--》選擇Debug Sampler,以便後面檢視是否正常的擷取了Excel中的資料
5) 添加http請求,将Excel中擷取的資料作為參數傳遞
6) 添加一個檢視結果樹,以檢視執行之後的結果
7) 設定線程組
比如循環次數設定5,系統會重複執行5次,依次讀取第前5條資料作為傳參,調用接口
8) 遇到問題
Csv格式添加資料,但是無法儲存設定的格式,比如設定的時間格式樣式就丢失了
是以,最終未使用從excel中讀取資料,而是計劃從txt中讀取資料
3.2. Jmeter讀取txt
步驟基本上同章節3.1 Jmeter讀取Excel 一緻,也是六大步驟,僅附上與excel 不同的截圖
1) 添加線程組
2) 添加配置元件--》選擇CSV Data Set Config
附上txt内容
3) 添加--》取樣器--》選擇BeanShell Sampler,使用vars.get方法擷取Excel的值
4) 添加--》取樣器--》選擇Debug Sampler,以便後面檢視是否正常的擷取了Excel中的資料
5) 添加http請求,将Excel中擷取的資料作為參數傳遞
6) 添加一個檢視結果樹,以檢視執行之後的結果、
7) 設定線程組
第四章 常見問題
4.1. Jmeter請求參數時,中文出現亂碼
問題描述:使用jmeter時,又遇到了在接口參數輸入有帶中文的時候,執行接口後,出現亂碼的情況