以下是工作中常用的 JMeter 自带函数及其用途、语法和示例
常用 JMeter 函数列表
1. __Random
函数
- 用途:生成指定范围内的随机整数。
- 语法:
${__Random(min,max,varName)}
- 示例:
场景:参数化用户ID、订单号等需要唯一值的字段。${__Random(1,100,randomNum)} // 生成1-100的随机数,存入变量randomNum
2. __time
函数
- 用途:获取当前时间戳(支持格式化)。
- 语法:
${__time(format,varName)}
- 示例:
场景:接口测试中动态生成时间参数(如订单创建时间)。${__time(yyyy-MM-dd HH:mm:ss,currentTime)} // 输出:2024-05-30 14:30:00
3. __threadNum
函数
- 用途:获取当前线程(用户)的编号。
- 语法:
${__threadNum}
- 示例:
场景:标记不同虚拟用户的操作日志。User-${__threadNum} // 输出:User-1, User-2...
4. __counter
函数
- 用途:生成递增计数器(支持全局/局部计数)。
- 语法:
${__counter(true/false,varName)}
- 示例:
场景:生成唯一订单号、批量数据标识。${__counter(true,globalCounter)} // 全局计数器,跨线程递增 ${__counter(false,localCounter)} // 线程内局部计数器
5. __CSVRead
函数
- 用途:从 CSV 文件中逐行读取数据。
- 语法:
${__CSVRead(fileName,columnNum)}
- 示例:
场景:数据驱动测试(如多账号登录测试)。${__CSVRead(testdata.csv,0)} // 读取testdata.csv第1列的值
6. __StringFromFile
函数
- 用途:从文本文件中逐行读取字符串。
- 语法:
${__StringFromFile(fileName,varName,startSeq)}
- 示例:
场景:参数化长文本字段(如商品描述)。${__StringFromFile(products.txt,,)} // 循环读取文件内容
7. __V
函数
- 用途:动态拼接变量名。
- 语法:
${__V(varName)}
- 示例:
场景:批量管理不同线程的变量。${__V(user_${__threadNum})} // 访问变量名user_1, user_2...
8. __eval
函数
- 用途:执行变量或表达式的动态求值。
- 语法:
${__eval(expression)}
- 示例:
场景:动态计算接口参数(如价格总和)。${__eval(${var1} + ${var2})} // 计算变量var1和var2的和
9. __property
函数
- 用途:读取 JMeter 系统属性。
- 语法:
${__property(propertyName,default,varName)}
- 示例:
场景:动态获取环境配置(如文件路径)。${__property(user.dir,,currentDir)} // 获取JMeter启动目录
10. __split
函数
- 用途:按分隔符拆分字符串为数组。
- 语法:
${__split(string,delimiter,varName)}
- 示例:
场景:处理接口返回的逗号分隔数据(如ID列表)。${__split(apple,banana,orange,,,fruits)} // 拆分后,fruits_1=apple, fruits_2=banana...
11. __UUID
函数
- 用途:生成全局唯一标识符(UUID)。
- 语法:
${__UUID}
- 示例:
场景:生成唯一请求ID或Token。${__UUID} // 输出:550e8400-e29b-41d4-a716-446655440000
12. __FileToString
函数
- 用途:将整个文件内容读取为字符串。
- 语法:
${__FileToString(fileName,encoding,varName)}
- 示例:
场景:上传文件内容或复杂JSON请求体。${__FileToString(payload.json,UTF-8,jsonData)} // 读取JSON请求体
使用技巧
- 函数助手对话框:通过 JMeter 的
Options → Function Helper
查找和生成函数。 - 调试技巧:使用
Debug Sampler
查看函数输出值。 - 性能优化:避免在高并发下频繁读取大文件(如
__CSVRead
改用 CSV Data Set Config)。