Postman中清理临时变量需在Tests脚本中调用pm.environment.clear()或pm.globals.clear(),或用unset删除指定键;Pre-request Script设的变量须在Tests中清理;历史记录、Cookies、缓存需手动清除,与脚本无关。

清除环境变量和全局变量用 pm.environment.clear() 和 pm.globals.clear()
Postman 的测试脚本(Tests 标签页)里,临时变量通常指运行时动态设置的环境变量或全局变量,比如从响应中提取的 token、id 或临时生成的 timestamp。这些变量不会自动消失,会污染后续请求。最直接的清理方式就是在测试结束前调用清除方法:
-
pm.environment.clear()删除当前环境下的所有变量(包括你用pm.environment.set()设置的) -
pm.globals.clear()删除所有全局变量(慎用,可能影响其他集合) - 如果只想清个别变量,用
pm.environment.unset("key")或pm.globals.unset("key")
注意:这些方法只在脚本中生效,不会影响 Postman 界面里手动添加的变量值;且必须写在 Tests 里(不是 Pre-request Script),否则清理动作发生在请求发出前,起不到“收尾”作用。
Pre-request Script 里设的变量,得在 Tests 里手动清理
很多人习惯在 Pre-request Script 中动态生成参数,比如:
pm.environment.set("random_id", Math.floor(Math.random() * 10000));
这类变量一旦设了就一直存在,除非显式清除。常见陷阱是:同一集合多次运行后,random_id 值没变,因为变量没被覆盖或清空。解决办法是在 Tests 末尾补一句:
pm.environment.unset("random_id");
或者更稳妥地,在 Pre-request Script 开头先清再设:
pm.environment.unset("random_id");<br>pm.environment.set("random_id", Math.floor(Math.random() * 10000));
这样每次请求都是干净起点,避免变量残留干扰断言或依赖逻辑。
Postman 12.27.7 Windows x64 官方安装包,适用于 API 设计、调试、测试与协作。该系列包含 Enterprise 云端性能测试静态 IP 出口能力,以及接口规范标签管理改进,适合受限网络测试与规范资源组织场景。
历史请求、Cookies、缓存不是“变量”,得走不同路径清理
用户常把“测试产生的垃圾”全归为“临时变量”,但实际包含三类东西:
-
历史请求记录:属于 UI 层数据,用菜单
View → Clear History或删~/Library/Application Support/Postman -
Cookies:点击请求旁的
Cookies按钮,点Clear all Cookies;或用快捷键Ctrl+Shift+I打开控制台手动删 -
本地缓存(如响应体、预加载资源):没有 API 可调,只能删
~/Library/Caches/com.postmanlabs.mac
它们和 pm.*.set() 完全无关,脚本里调 clear() 对它们无效。混淆这点会导致反复清理失败。
自动化测试(Newman)中变量残留更隐蔽,建议每轮测试独立环境
用 Newman 运行集合时,如果不指定 --environment,它会复用默认环境,变量就跨轮次累积。真实 CI 场景中容易出现:
- 第一轮测试设了
user_id,第二轮没重设,结果用旧 ID 发请求 - 全局变量未隔离,多个 job 并发时互相覆盖
推荐做法:
- 每次 Newman 运行都带
--environment env.json,且env.json是临时生成的(不含敏感值) - 在 Tests 里统一加
pm.environment.clear()作为兜底 - 禁用界面端的
Save requests to history,避免日志膨胀掩盖问题
变量本身不占多少内存,但残留逻辑会悄悄破坏测试稳定性——尤其当一个变量名在多个集合里被重复使用却没清理时,调试成本远高于加一行 unset。










