生成测试数据:使用表达式生成随机 ID (UUID) 和随机数字

2026-01-25 29 0

还在手动伪造数据?你的测试环境该“自动化”了

笔者在 N8N大学 社区潜水时,发现很多新手在调试工作流时,总是在重复一件枯燥的事:去网上找个随机生成器,复制 ID,粘贴;再复制数字,粘贴。甚至为了测试某个字段,还得手动修改 JSON 报文。

这不仅效率极低,而且容易出错。更重要的是,当你需要测试几百条数据的批量处理逻辑时,手动操作简直是灾难。既然用了 n8n,就该把这种机械劳动彻底交给机器。

今天,笔者就带大家硬核拆解如何在 n8n 中,仅凭两个简单的表达式,瞬间生成标准的 UUID 和随机数字。学会这一招,你的测试效率将提升 10 倍。

核心实操:手把手教你生成随机数据

在 n8n 中,生成随机数据的核心在于 表达式 (Expression)Set 节点。我们不需要复杂的代码,只需要调用 n8n 内置的函数。

步骤一:准备 Set 节点

首先,新建一个 Workflow,拖入一个 Set 节点。这个节点是我们在 n8n 里定义变量的“万能钥匙”。

  1. 双击打开 Set 节点。
  2. Name 列输入字段名(例如 userId)。
  3. Value 列,点击输入框右侧的 表达式图标(就是那个橙色的 fx)。

步骤二:生成 UUID(通用唯一识别码)

UUID 是数据库主键和测试数据的黄金标准。在 Value 栏的表达式编辑器中,输入以下命令:

{{$now.milliseconds}}_{{$node["Set"].json["randomInt"]}} (n8n 原生生成方式)

当然,最硬核的做法是直接利用 JavaScript 生成标准 UUID。在表达式编辑器中,你可以直接粘贴这段代码:

{{Math.random().toString(36).substring(2) + Date.now().toString(36)}}

笔者注: 虽然这不是标准的 128 位 UUID 格式,但对于绝大多数测试场景(特别是需要唯一性的字符串),它完全够用且速度极快。如果你必须使用标准 UUID 格式,可以结合 Code 节点或使用 HTTP Request 节点调用外部 API(如 uuidgen),但在本地测试中,上面的表达式性价比最高。

步骤三:生成随机数字

继续在 Set 节点中添加一行。Name 填 randomAge,Value 依然点击 fx。

n8n 的表达式引擎基于 JavaScript,所以我们可以直接使用 Math 对象:

{{Math.floor(Math.random() * 100) + 18}}

这段表达式的含义是:生成一个 0 到 99 之间的随机整数,然后加上 18。最终结果就是 18 到 118 之间的随机年龄。如果你只需要 0-100,去掉 + 18 即可。

步骤四:验证输出

配置完成后,点击 执行节点。你会看到 Output 区域出现了类似这样的数据:

{
  "userId": "a1b2c3d4e5f6173890123456",
  "randomAge": 42
}

现在,你可以把 Set 节点的输出连接到下一个节点(比如 HTTP Request 或 Airtable),用来测试你的数据库写入或 API 调用了。

进阶技巧:生成指定长度的随机数

有时候我们需要生成固定位数的数字,比如 6 位验证码。这时候简单的 Math.random() 就不够用了。

在表达式编辑器中,使用以下逻辑:

{{Math.floor(100000 + Math.random() * 900000)}}

这段代码保证了生成的数字始终是 6 位数。你可以根据需要调整 100000 和 900000 的值,比如 6 位就是 100000 到 999999 之间。

避坑指南:表达式中的常见误区

虽然生成随机数据很简单,但新手常在细节上翻车。这里分享两个实战中的坑:

1. 忘记加双花括号 {{ }}
n8n 的表达式必须包裹在双花括号中。如果你直接写 Math.random(),n8n 会把它当成纯字符串处理,永远不会生成动态数据。

2. 随机数的“种子”问题
在 n8n 的 Set 节点中,如果你把生成随机数的表达式放在同一个节点的多个字段里,有时候它们会基于非常接近的时间戳生成,导致看起来不够“随机”。如果需要极高并发的随机性,建议分两个 Set 节点,或者在表达式中混入 $now.milliseconds 作为扰动因子。

FAQ:关于生成随机数据的常见疑问

Q1: 我需要生成中文姓名或地址,n8n 能做到吗?
A: 原生表达式很难生成有意义的中文。这种情况下,建议使用 Code 节点引入 Faker.js 库,或者简单点,准备一个包含中文词汇的 JSON 文件,用 Spreadsheet File 节点读取并随机取值。

Q2: 生成的随机数每次执行都不一样,怎么固定它以便调试?
A: 在 n8n 的 Workflow 设置中,你可以开启 "Manual Execution"(手动执行)模式,或者在表达式里把随机函数改成固定值(例如把 Math.random() 改成 123),调试完再改回来。

Q3: 为什么我生成的 UUID 看起来很短?
A: 通常是因为使用了 Math.random().toString(36)。这是生成的短 ID,不是标准的 36 位 UUID。如果后端校验严格,请务必使用 Code 节点运行 require('crypto').randomUUID() 或调用专门的 API。

总结与资源

掌握了 Set 节点 配合 表达式 (Expression),你就拥有了无限的测试数据源。这不仅是测试工作流的利器,也是学习 n8n 数据处理逻辑的最佳切入点。

在 N8N大学,我们始终相信:自动化始于细微之处。下次当你需要测试数据时,别再打开浏览器搜索随机生成器了,直接在 n8n 里敲两行代码吧。

相关文章

n8n Wait节点在数据同步中的延迟控制实战
n8n Wait节点免费版:我能用它实现定时任务吗?
n8n Error Handling节点:当自动化流程“翻车”时,如何让它自动“扶起来”?
n8n Error Handling节点报错常见问题解决
当n8n流程意外中断,Error Handling节点如何配置才能优雅降级?
n8n Error Handling节点和Try/Catch节点,到底该怎么选?

发布评论