Ubuntu中Postman脚本编写指南
Postman的脚本功能主要用于前置数据处理(Pre-request Script)和响应结果验证(Tests Script),均通过JavaScript语法编写,支持环境变量、断言、异步请求等特性,适用于Ubuntu系统的Postman桌面应用。
打开脚本编辑界面
在Postman中创建或选中一个请求,点击编辑器下方的Pre-request Script(前置脚本,请求发送前执行)或Tests(测试脚本,响应返回后执行)选项卡,即可进入脚本编写区域。
核心对象与常用方法
Postman脚本通过pm对象实现所有功能,关键方法如下:
pm.environment.get("variable_key")pm.environment.set("variable_key", "value")(仅支持字符串,对象需用JSON.stringify转换)pm.globals.get("variable_key")pm.globals.set("variable_key", "value")pm.request(可修改URL、Headers、Body等)pm.sendRequest(url/options, callback)(用于链式调用,如获取Token后再发主请求)pm.response(包含状态码、响应体、耗时等信息)pm.response.json()(返回JavaScript对象)pm.info.iteration(当前循环次数)console.log("debug info", variable)(通过Postman控制台查看)。前置脚本用于准备请求所需的动态数据,例如生成随机参数、加密敏感信息、设置请求头等。
// 生成10位随机字符串(字母+数字)
const randomStr = Math.random().toString(36).substr(2, 10);
pm.environment.set("randomStr", randomStr);
// 生成10位随机整数
const randomNum = Math.floor(Math.random() * 1e10);
pm.environment.set("randomNum", randomNum);
// 生成秒级时间戳(常用于接口时间校验)
const timestamp = Math.floor(Date.now() / 1000).toString();
pm.environment.set("timestamp", timestamp);
const token = pm.environment.get("auth_token");
pm.request.headers.add({ key: "Authorization", value: `Bearer ${token}` });
pm.sendRequest:pm.sendRequest("https://api.example.com/login", (error, response) => {
if (!error) {
const token = response.json().access_token;
pm.environment.set("auth_token", token); // 存储Token供后续请求使用
}
});
```。
测试脚本用于验证接口响应的正确性,通过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);
});
// 验证响应体包含特定字段
pm.test("Response contains required fields", () => {
const jsonData = pm.response.json();
pm.expect(jsonData).to.have.property("id");
pm.expect(jsonData).to.have.property("name");
});
deep属性验证嵌套字段:pm.test("Nested fields validation", () => {
const jsonData = pm.response.json();
pm.expect(jsonData.user).to.deep.include({
id: 1,
email: "user@example.com"
});
});
pm.test("Timestamp matches", () => {
const responseTimestamp = pm.response.json().timestamp;
const envTimestamp = pm.environment.get("timestamp");
pm.expect(responseTimestamp).to.eql(envTimestamp); // 验证响应时间戳与前置设置的是否一致
});
```。
查看脚本执行日志
在Postman中点击View → Show Postman Console(或使用快捷键Alt+Ctrl+C),可查看console.log输出的调试信息,帮助定位脚本问题。
使用断点调试
在脚本编辑区域点击行号左侧,设置断点,然后点击Send按钮,可逐行执行脚本并查看变量值(Postman Desktop支持此功能)。
数据驱动测试
结合Postman的Collection Runner,可通过CSV/JSON文件导入测试数据,实现批量测试。例如,在前置脚本中读取迭代数据:
const userId = pm.iterationData.get("userId"); // 从CSV文件中获取userId
pm.request.url.query.add({ key: "userId", value: userId });
```。
通过以上步骤,可在Ubuntu系统中使用Postman编写高效的API脚本,实现自动化测试、数据处理及环境变量管理,提升API开发与测试的效率。