Ubuntu下Postman脚本功能使用指南
Postman脚本分为两类,用于覆盖请求生命周期的关键环节:
Postman脚本通过pm对象实现与环境的交互,常用方法包括:
pm.environment.get("variableName")pm.environment.set("variableName", "value")pm.collectionVariables.get("variableName")pm.test()定义测试用例,结合pm.expect()实现断言(如pm.expect(response.code).to.eql(200))。pm.sendRequest()用于发送异步请求(如获取token后调用其他接口)。前置脚本常用于动态数据准备和环境配置,以下是常见场景:
生成随机数据并设置环境变量:
// 生成10位随机字符串(字母+数字)
const randomStr = Math.random().toString(36).substr(2, 10);
pm.environment.set("randomStr", randomStr);
// 生成10位时间戳(秒级)
const timestamp = Math.floor(Date.now() / 1000).toString();
pm.globals.set("timestamp", timestamp);
用途:作为接口请求参数,避免重复数据。
设置请求头(如Bearer Token):
// 从环境变量获取token并设置请求头
const token = pm.environment.get("authToken");
pm.request.headers.add({
key: "Authorization",
value: "Bearer " + token
});
用途:用于需要认证的API请求。
测试脚本通过断言验证接口响应的正确性,以下是常见场景:
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
pm.test("Response contains valid user data", function () {
const jsonData = pm.response.json();
pm.expect(jsonData).to.have.property("id");
pm.expect(jsonData.name).to.eql("test_user");
});
pm.test("Response time is less than 500ms", function () {
pm.expect(pm.response.responseTime).to.be.below(500);
});
pm.test("Email format is valid", function () {
const jsonData = pm.response.json();
pm.expect(jsonData.email).to.match(/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/);
});
用途:确保接口返回的数据符合业务逻辑。使用console.log输出调试信息:
console.log("Random string generated:", pm.environment.get("randomStr"));
console.log("Response body:", pm.response.json());
用途:通过Postman的“Console”面板查看输出,定位脚本问题。
查看测试结果:
Postman集合运行器:
Newman命令行工具:
npm install -g newmannewman run /path/to/your/collection.json --environment /path/to/your/environment.json数据驱动测试:
pm.iterationData.get("key")获取数据(如pm.iterationData.get("username"))。异步请求处理:
pm.sendRequest()发送异步请求,处理依赖接口(如先获取token,再用token调用其他接口)。pm.sendRequest({
url: pm.environment.get("apiBaseUrl") + "/token",
method: "POST",
body: JSON.stringify({ username: "user", password: "pass" })
}, (error, response) => {
if (!error) {
const token = response.json().token;
pm.environment.set("authToken", token);
}
});
用途:处理需要顺序执行的API请求。