CentOS下Postman脚本编写的实用技巧
在CentOS上使用Postman脚本前,需先安装Postman客户端及命令行工具Newman(用于自动化运行测试)。
sudo rpm --import https://dl.pstmn.io/release/key.asc # 导入GPG密钥
sudo vi /etc/yum.repos.d/postman.repo # 创建仓库文件
# 添加以下内容到文件中
[postman]
name=Postman Repository
baseurl=https://dl.pstmn.io/download/linux64
enabled=1
gpgcheck=1
gpgkey=https://dl.pstmn.io/release/key.asc
sudo yum install postman # 安装Postman
安装完成后,通过postman命令启动应用。sudo yum install -y nodejs npm # 安装Node.js和npm
sudo npm install -g newman # 全局安装Newman
变量是Postman脚本的核心,用于动态管理不同环境(开发、测试、生产)的配置,避免硬编码。
apiBaseUrl),作用域为当前环境;authToken),作用域为全局;pm.environment.get("变量名")(环境变量)、pm.globals.get("变量名")(全局变量);pm.environment.set("变量名", "值")(字符串类型,若需存储JSON需用JSON.stringify)、pm.globals.set("变量名", "值");pm.environment.unset("变量名")。apiBaseUrl(如https://dev.api.example.com)、authToken等变量。在请求URL中使用{{apiBaseUrl}}/endpoint格式,Postman会自动替换为实际值。前置脚本在请求发送前执行,常用于动态生成参数、设置请求头或验证前置条件。
var randomNum = Math.floor(1000 + Math.random() * 9000); // 生成1000-9999的随机数
pm.request.url.addQueryParams([{ key: "random", value: randomNum.toString() }]);
const token = pm.environment.get("authToken");
pm.request.headers.add({ key: "Authorization", value: `Bearer ${token}` });
const apiUrl = pm.environment.get("apiBaseUrl");
pm.test("API base URL is set", () => {
pm.expect(apiUrl).not.toBeNull();
pm.expect(apiUrl).not.toBe("");
});
后置脚本在收到响应后执行,用于验证响应状态、解析响应体或存储数据供后续请求使用。
pm.test("Status code is 200", () => {
pm.response.to.have.status(200);
});
pm.test("Response time is less than 500ms", () => {
pm.expect(pm.response.time).toBeLessThan(500);
});
pm.test("Check user email in response", () => {
const jsonData = pm.response.json(); // 解析JSON响应体
pm.expect(jsonData.email).to.eql("user@example.com");
});
const authToken = pm.response.json().token;
pm.environment.set("authToken", authToken); // 存储token到环境变量
通过Newman将Postman集合自动化,集成到CI/CD流程(如Jenkins)中。
collection.json);同理导出环境文件(如environment.json)。newman run /path/to/collection.json -e /path/to/environment.json
常用选项:
-r html:生成HTML格式报告(需添加--reporter-html-templatePath指定模板路径);--reporter-json-export report.json:导出JSON格式报告。run_postman.sh,实现一键运行:#!/bin/bash
COLLECTION_FILE="/path/to/collection.json"
ENVIRONMENT_FILE="/path/to/environment.json"
newman run "$COLLECTION_FILE" -e "$ENVIRONMENT_FILE" --reporters cli,html --reporter-html-export report.html
赋予执行权限并运行:chmod +x run_postman.sh
./run_postman.sh
调试是脚本编写的关键,以下方法可快速定位问题:
console.log打印变量:在脚本中添加console.log语句,查看变量值或中间结果(如console.log("Token:", pm.environment.get("authToken")))。pm.test断言:通过pm.test编写单元测试,验证脚本逻辑(如pm.test("Variable is set", () => { pm.expect(myVar).toBeTruthy(); }))。pm.test块,逐步执行验证。testdata.csv):username,password
user1,pass1
user2,pass2
pm.sendRequest发送异步请求,或使用child_process执行系统命令(如生成报告)。
pm.sendRequest({
url: pm.environment.get("apiBaseUrl") + "/async-endpoint",
method: "GET"
}, (error, response) => {
if (error) {
console.error("Request failed:", error);
} else {
pm.test("Async request succeeded", () => {
pm.expect(response.status).to.eql(200);
});
}
});