介绍动态变量:即时生成真实的测试数据
发布: (2026年3月9日 GMT+8 15:32)
4 分钟阅读
原文: Dev.to
Source: Dev.to
什么是动态变量?
动态变量是特殊的占位符,在运行时会解析为自动生成的值。它们使用 $ 前缀,并通过以下模板语法访问:
{{$variableName}}
每次请求执行时,变量都会产生一个新值。
示例
{{$randomUUID}}→ 生成一个新的 UUID{{$timestamp}}→ 当前 UNIX 时间戳{{$randomInt}}→ 随机整数{{$guid}}→ GUID 样式标识符
关键区别在于:这些变量不需要你自行定义,属于内置并随时可用。
为什么生成测试数据很痛苦
开发者和 QA 团队经常会遇到:
- 重复使用的邮箱或用户 ID 导致注册和唯一性检查失败。
- 为每次运行手动编辑负载,既慢又容易出错。
- 当数据库中已存在数据时,测试会失效。
动态变量通过为每次执行生成全新的、真实的输入,消除了这些问题。
在模板中使用动态变量
动态变量可以放在请求的任何位置:URL、查询参数、请求头或请求体。
示例请求体
{
"id": "{{$randomUUID}}",
"email": "{{$randomEmail}}",
"createdAt": "{{$timestamp}}"
}
每次执行都会生成一个唯一的用户配置文件。
在脚本中使用动态变量
在脚本中也可以通过 rq 对象访问动态变量。
const userId = rq.$randomUUID();
const timestamp = rq.$timestamp();
const email = rq.$randomEmail();
注意,它们在脚本中像函数一样调用。
变量参数
某些动态变量支持可选参数,以自定义输出。
模板语法
{{$variableName arg1 arg2 …}}
带参数的示例
{
"id": "{{$randomAlphaNumeric 10}}",
"email": "{{$randomEmail 'John' 'Doe'}}",
"age": "{{$randomInt 18 65}}",
"price": "{{$randomPrice 10 100 2 '$'}}"
}
这让你能够控制:
- 随机字符串的长度
- 基于姓名的邮箱生成
- 整数范围
- 价格范围及格式化
无需编写额外逻辑,即可获得灵活性。
实际使用场景
动态变量在各种工作流中大放异彩:
- 注册流程: 为每次测试运行创建唯一用户,无需清理数据库。
- OTP/时间戳测试: 为认证流程生成有效的基于时间的负载。
- 负载测试: 提供随机化输入,以发现边缘案例错误。
- CI/CD 流水线: 运行可靠、可重复的测试,而不依赖预先填充的数据。
- 模拟服务器: 为前端开发返回真实、可变的响应。
这些可以把脆弱的测试转变为可靠的检查,并加快开发反馈循环。