当前位置: 首页 > 测试知识 > JMeter的UUID函数、time函数、Random函数
JMeter的UUID函数、time函数、Random函数
2026-05-21 作者cwb 浏览次数131

JMeter的UUID函数、time函数和Random函数是最常用的三个内置函数,用于动态生成唯一标识、时间戳和随机数据,模拟真实请求的参数变化。


1. UUID 函数- __UUID()

作用:生成一个全局唯一的标识符(符合 UUID 标准,如 3b241101-e2bb-4255-8caf-4136c566a962),每次调用都会产生不同的值。


语法:

${__UUID()}


该函数 没有参数,不能像其他函数那样通过变量名参数把结果存入变量。如果需要在同一个请求的多个地方复用同一个 UUID,可将它配合用户自定义变量或前置处理器存入变量:

方法一:使用 BeanShell / JSR223 前置处理器 vars.put("myUUID", UUID.randomUUID().toString()); 然后引用 ${myUUID}。

方法二:如果只是在一次请求中出现多次,可以直接写 ${__UUID()},但每次求值都会生成新 UUID,并不相同。


场景:

模拟订单号、流水号、唯一会话 ID;

注册时生成唯一邮箱:${__UUID()}@zmtests.com;

避免缓存影响的随机参数:?nocache=${__UUID()}。

2. time 函数- __time() / __timeShift()

作用:生成当前时间戳或指定格式的时间字符串,也可进行日期加减计算。


__time() - 当前时间

语法:

${__time(格式, 变量名)}


格式:根据 SimpleDateFormat,如 yyyy-MM-dd HH:mm:ss。如果省略格式,直接写逗号可返回从1970-01-01到现在的毫秒数。

变量名:可选,将生成的时间存入变量,方便重复使用。


常见示例:

当前日期时间:${__time(yyyy-MM-dd HH:mm:ss,)}

当前时间戳(毫秒):${__time(,)}

存入变量后引用:${__time(yyyyMMddHHmmss, currentTS)},后续用 ${currentTS}


__timeShift() - 时间偏移


语法:

${__timeShift(格式, 日期字符串, 偏移量, 语言环境, 变量名)}


日期字符串:如 now(当前时间)或特定时间 2026-05-21。

偏移量:用 ISO 8601 不断时间格式,如 P1D(加 1 天)、-PT2H(减 2 小时)、P1DT1H(加 1 天 1 小时)。

语言环境:可留空。

变量名:可选。


示例:

明天的当前时刻:${__timeShift(yyyy-MM-dd HH:mm:ss,now,P1D,,)}

一周前日期:${__timeShift(yyyy-MM-dd,now,-P7D,,)}

存入变量:${__timeShift(yyyy-MM-dd,now,P1D,,nextDay)},后续用 ${nextDay}


典型场景:

请求中携带当前时间戳、过期时间;

模拟订单过期、提醒时间偏移测试;

构造动态日期范围的查询参数。


3. Random函数 - __Random() / __RandomString() / __RandomDate()

JMeter提供了多种随机函数,最常见的是 __Random 和 __RandomString。


__Random() - 随机整数


语法:

${__Random(最小值, 最大值, 变量名)}


生成 [最小值, 最大值] 区间内的一个随机整数。

存入变量后,可在后续请求中重复使用同一个随机值。


示例:

生成 1~100 的随机数:${__Random(1,100,)}

随机用户 ID 并复用:${__Random(1000,9999,userID)},之后用 ${userID}


__RandomString() - 随机字符串


语法:

${__RandomString(长度, 字符集, 变量名)}


长度:生成字符串的长度。

字符集:可选的字符范围。如果留空,则默认使用大小写字母和数字。也可以指定如 abcdefg 只从这几个字符中随机选取。


示例:

生成 8 位随机字母数字:${__RandomString(8,,)}

生成 6 位纯数字:${__RandomString(6,0123456789,)}

存入变量:${__RandomString(10,abcdef,myCode)},后面用 ${myCode}


__RandomDate() — 随机日期


${__RandomDate(起始日期, 结束日期, 日期格式, 变量名)}


示例:${__RandomDate(2024-01-01,2024-12-31,yyyy-MM-dd,)} 随机返回 2024 年某一天。


典型场景:

模拟不同用户 ID、账户 ID、金额;

构造随机手机号、证实码;

测试数据脱敏时生成随机姓名/字符串前缀;

随机选择日期进行历史数据查询。


三者组合实例

实际测试中,常将这三个函数组合起来,生成高度动态且不易重复的测试数据。如:


注册新用户 - 参数体:


json

{

  "username": "user_${__time(yyyyMMdd,)}_${__Random(100,999,)}",

  "email": "${__UUID()}@test.com",

  "signupTime": "${__time(yyyy-MM-dd HH:mm:ss,)}"

}


username 包含日期和随机数,基本保证不重复;

email 借助 UUID 保证全局唯一;

signupTime 真实当前时间。


注意事项

函数大小写:__UUID、__time、__Random 都是严格按这个写法(UUID 全大写)。

逗号占位:如果一个函数有可选参数但不传值,需要保留逗号,如 ${__time(yyyy-MM-dd,)},否则可能报错。

变量作用域:带变量名的函数只会在第一次求值时生成值并存入变量,后续同一线程内引用该变量会保持相同值。如果不指定变量名,则每次调用都会重新生成。

性能:以上均为 JMeter 内置函数,效率很高,无需担心性能开销。


文章标签: 软件测试 测试工具
咨询软件测试