应使用 Pre-request Script 生成随机值并存入环境变量(如 pm.environment.set("rand_id", rand6)),再通过 {{rand_id}} 在 URL、Headers、Body 中统一引用,避免 {{$randomInt}} 多次解析导致值不一致。

为什么 {{$randomInt}} 每次发送都变,但同一请求里想复用同一个值?
因为 Postman 的动态变量(如 {{$randomInt}}、{{$guid}}、{{$timestamp}})在每次「变量解析时」都会重新生成——而一个请求的 URL、Headers、Body 是**分别独立解析**的。比如你在 URL 里写 {{url}}?id={{$randomInt}},又在 Body 里写 {"id": {{$randomInt}}},这两个 {{$randomInt}} 会被算两次,结果不同。
用 Pre-request Script 生成一次,存到环境变量再复用
这是最稳、最可控的做法:在请求发出前统一生成随机值,存进 pm.environment(或 pm.globals),后续所有位置都引用同一个变量名。
- 打开请求 → 切到 Pre-request Script 标签页
- 写脚本生成并保存,例如生成 6 位随机数供本次请求全程使用:
const rand6 = Math.floor(100000 + Math.random() * 900000);
pm.environment.set("rand_id", rand6);- 然后在 URL、Headers、Body 里统一用
{{rand_id}}—— 所有地方取的都是同一个值 - 注意:不要用
pm.variables.set(),它只在当前请求生命周期内有效,且无法被 URL/Body 解析到
别误用 pm.variables.replaceIn() 去“取”动态变量
有人试过这样写:pm.variables.replaceIn("{{$randomInt}}"),以为能拿到一次值。但实际它只是做字符串替换,且每次调用仍会触发新生成——跟直接写 {{$randomInt}} 行为一致,不能解决复用问题。
Postman 12.27.7 Windows x64 官方安装包,适用于 API 设计、调试、测试与协作。该系列包含 Enterprise 云端性能测试静态 IP 出口能力,以及接口规范标签管理改进,适合受限网络测试与规范资源组织场景。
-
pm.variables.replaceIn()适合拼接字符串(比如"user_{{$randomInt}}@test.com"),不适合“固定取值” - 真正要固定,必须靠
set()+{{xxx}}引用组合 - 如果用了集合变量或全局变量,记得确认作用域优先级:Data > Local > Environment > Global,避免被更高优先级同名变量覆盖
复杂场景:需要同时生成多个关联随机值(如邮箱+密码+手机号)
仍然在 Pre-request Script 里一次性生成、一次性 set,保证它们之间逻辑一致(比如邮箱域名和密码长度匹配)。不要分多次调用 {{$randomxxx}}。
- 示例:生成测试用户三件套
const email = `test_${Date.now()}@example.com`;
const pwd = Math.random().toString(36).substring(2, 10) + "A1!";
const phone = `1${Math.floor(1000000000 + Math.random() * 900000000)}`;
pm.environment.set("test_email", email);
pm.environment.set("test_pwd", pwd);
pm.environment.set("test_phone", phone);- Body 中直接写:
{"email": "{{test_email}}", "password": "{{test_pwd}}", "phone": "{{test_phone}}"} - 这样整套数据是原子性的,不会出现邮箱已注册但密码没提交的错乱
真正容易被忽略的是:Postman 不会自动帮你“记住”某次生成的值——哪怕你只发一次请求,只要 URL 和 Body 分开解析,就默认不共享。固定复用这件事,必须由你显式用脚本控制生命周期。

















