Ubuntu中Postman使用Pre-request Script
一 环境与入口
- 在 Ubuntu 上安装并启动 Postman(可用 Snap 或下载 Linux 64 版本解压运行),启动后在左侧选择或创建一个 请求,在请求编辑区底部切换到 Pre-request Script 页签即可编写脚本。该脚本会在请求发送前执行,适合做请求构建与数据准备。
二 常用操作速览
- 变量读写
- 读取:pm.environment.get(“key”)、pm.globals.get(“key”)、pm.collectionVariables.get(“key”)、pm.variables.get(“key”)
- 设置:pm.environment.set(“key”,“value”)、pm.globals.set(“key”,“value”)、pm.collectionVariables.set(“key”,“value”)
- 请求头操作
- 新增:pm.request.headers.add({key:“Header-Name”, value:“value”})
- 删除:pm.request.headers.remove(“Header-Name”)
- 在请求中使用变量
- 在 URL/Params/Headers/Body 中以 {{变量名}} 引用,例如:{{token}}、{{timestamp}}。
三 常见场景示例
-
动态生成时间戳并写入变量
-
生成随机数与随机手机号
- 代码:
const rand = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
pm.environment.set("randomInt", rand(1000, 9999));
const mobile = "18" + rand(100000000, 999999999);
pm.environment.set("mobile", mobile);
- 使用:在 Body 或 Params 中使用 {{randomInt}}、{{mobile}}。
-
登录后取 token 并注入请求头
- 思路:在登录请求的 Tests 中将 access_token 写入环境变量;在需要认证的请求的 Pre-request Script 中读取并写入 Authorization 头。
- Tests(登录请求):
const json = pm.response.json();
if (json.code === 200 && json.result) {
pm.environment.set("access_token", json.result);
}
- Pre-request Script(其他请求):
const token = pm.environment.get("access_token");
if (token) {
pm.request.headers.add({key:"Authorization", value:"Bearer " + token});
}
- 说明:也可在 Pre-request 中先调用登录接口获取 token 再设置(见下一节)。
-
预请求中先调接口取数据并设置变量
- 代码:
const postReq = {
url: 'https://postman-echo.com/post',
method: 'POST',
header: {'Content-Type': 'application/json'},
body: { mode: 'raw', raw: JSON.stringify({ key: 'test' }) }
};
pm.sendRequest(postReq, (err, res) => {
if (!err) {
const data = res.json();
pm.collectionVariables.set("echoKey", data.json.key);
}
});
- 使用:后续请求用 {{echoKey}} 引用该值。
四 调试与批量运行
- 调试
- 使用 Postman Console(View → Show Postman Console)查看 console.log 输出与脚本错误,便于定位问题。
- 批量与自动化
- 在 Collection Runner 中导入 CSV/JSON 数据文件进行数据驱动测试;结合环境变量/集合变量实现用例间的数据传递与复用。
五 最佳实践与排错
- 作用域选择:优先使用 集合变量/环境变量 管理跨请求数据,避免滥用 全局变量;变量命名保持统一规范。
- 性能与幂等:避免在 Pre-request 中执行耗时操作(如长轮询/大文件读取);必要时增加条件判断与缓存,减少对外部接口的频繁调用。
- 头与参数管理:通过脚本集中管理 Authorization 等公共头;如需复用一组头,可结合 Headers Presets 提升效率。
- 错误处理:为 pm.sendRequest 增加错误分支,必要时使用 try-catch 保护关键逻辑,防止脚本异常中断请求发送。