Ubuntu上Postman脚本编写指南
Postman的脚本功能主要用于前置数据处理(Pre-request Script)和响应结果验证(Tests Script),支持JavaScript语法,借助pm对象实现变量操作、请求发送、断言等功能。以下是具体编写步骤与常见用法:
前置脚本在请求发送前执行,常用于生成动态数据、设置请求头/参数、获取环境变量等场景。
// 生成10位随机字符串(字母+数字)
pm.environment.set("randomStr", Math.random().toString(36).substr(2, 10));
// 生成10位随机整数
pm.environment.set("randomNum", Math.floor(Math.random() * 1e10));
// 生成秒级时间戳(常用于接口时间参数)
pm.globals.set("timestamp", Math.floor(Date.now() / 1000).toString());
const token = pm.environment.get("authToken");
pm.request.headers.add({ key: "Authorization", value: "Bearer " + token });
const baseUrl = pm.environment.get("apiBaseUrl");
const userId = pm.globals.get("currentUserId");
以上脚本会在请求发送前执行,确保动态数据准备好。
测试脚本在请求响应后执行,用于验证响应状态、解析响应数据、断言业务逻辑等,需通过pm.test()包裹断言逻辑。
// 断言状态码为200
pm.test("Status code is 200", () => {
pm.response.to.have.status(200);
});
// 断言响应时间小于200ms
pm.test("Response time is less than 200ms", () => {
pm.expect(pm.response.responseTime).to.be.below(200);
});
{"code": 200, "data": {"email": "user@example.com"}}):// 解析JSON响应
const jsonData = pm.response.json();
// 断言data.email等于环境变量中的username
pm.test("Email matches environment variable", () => {
pm.expect(jsonData.data.email).to.eql(pm.environment.get("username"));
});
// 断言code为200
pm.test("Response code is 200", () => {
pm.expect(jsonData.code).to.equal(200);
});
// 发送前置请求获取token
pm.sendRequest("https://api.example.com/login", (err, response) => {
if (!err) {
const token = response.json().token;
// 将token存入环境变量
pm.environment.set("authToken", token);
}
});
以上脚本会在响应返回后自动执行,通过测试结果面板查看断言结果。
pm对象方法Postman的pm对象提供了丰富的API,以下是高频使用的方法:
// 设置/获取/删除环境变量
pm.environment.set("key", "value");
const value = pm.environment.get("key");
pm.environment.unset("key");
// 设置/获取/删除全局变量
pm.globals.set("key", "value");
const globalValue = pm.globals.get("key");
pm.globals.unset("key");
// 获取请求URL
const url = pm.request.url.toString();
// 修改请求头
pm.request.headers.add({ key: "Content-Type", value: "application/json" });
// 获取响应状态码
const statusCode = pm.response.code;
// 获取响应体(字符串/JSON)
const responseBody = pm.response.text();
const jsonResponse = pm.response.json();
// 获取响应时间(ms)
const responseTime = pm.response.responseTime;
pm.sendRequest("https://api.example.com/data", (err, response) => {
if (err) console.error(err);
else console.log(response.json());
});
这些方法覆盖了脚本编写的大部分需求,可根据业务场景灵活组合。
console.log()输出变量值或调试信息,在Postman的View → Show Postman Console(或快捷键Alt+Ctrl+C)中查看日志。console.log("Generated randomStr:", pm.environment.get("randomStr"));
通过以上步骤,可在Ubuntu上高效使用Postman脚本实现API自动化测试、数据处理及流程编排。脚本编写需结合业务场景,灵活运用pm对象的方法和JavaScript语法,逐步优化测试流程。