Ubuntu下Postman自动化测试实现指南
Postman支持多种方式在Ubuntu上安装,推荐使用Snap包管理器(简单快捷)或APT包管理器(官方源,稳定性高):
Snap安装(推荐)
打开终端,执行以下命令:
sudo snap install postman --classic
安装完成后,通过终端输入postman即可启动应用。
APT安装(官方源)
wget -qO - https://dl.postman.co/postman.gpg | sudo apt-key add -
echo "deb https://dl.postman.co/debian $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/postman.list
sudo apt update && sudo apt install postman
安装完成后,通过应用菜单或终端输入postman启动。
创建测试集合
集合是组织多个API请求的容器,便于批量执行测试。
配置环境变量
环境变量用于管理不同环境(开发、测试、生产)的配置(如URL、API Key),避免硬编码。
baseUrl=https://api.example.com),点击“Add”。测试脚本分为Pre-request Script(请求前执行,用于准备数据)和Tests(响应后执行,用于验证结果),均使用JavaScript编写。
常用于设置动态变量、生成Token或添加请求头。
示例:生成一个随机用户ID并存入环境变量,供后续请求使用:
// 生成随机用户ID(1-1000)
const userId = Math.floor(Math.random() * 1000) + 1;
// 存入环境变量
pm.environment.set("userId", userId);
console.log("Generated userId:", userId);
用于验证API响应是否符合预期,常用Chai断言库(Postman内置)。
示例:验证GET请求的响应状态码、响应时间及数据字段:
// 验证状态码为200
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
// 验证响应时间小于500ms
pm.test("Response time is less than 500ms", function () {
pm.expect(pm.response.responseTime).to.be.below(500);
});
// 解析响应体(JSON格式)并验证字段
pm.test("Response contains valid user data", function () {
const jsonData = pm.response.json();
pm.expect(jsonData).to.have.property("id");
pm.expect(jsonData.id).to.eql(pm.environment.get("userId")); // 验证返回的ID与生成的ID一致
pm.expect(jsonData).to.have.property("name").that.is.a("string");
});
使用Postman Runner(图形界面)
使用Newman(命令行工具,集成CI/CD)
Newman是Postman的命令行工具,可将测试集合导出为JSON文件并通过命令行执行,适合自动化流水线。
npm install -g newman
api_collection.json。newman run api_collection.json --environment Test_Env.json --reporters cli,json --reporter-json-export newman_report.json
参数说明:
--environment:指定环境文件(需提前导出);--reporters:生成报告(cli为终端输出,json为文件报告);--reporter-json-export:JSON报告保存路径。数据驱动测试
通过CSV/JSON文件批量提供测试数据,实现不同输入值的自动化测试。
data.csv):userId,title
1,delectus aut autem
2,quis ut nam facilis
3,fugiat veniam minus
pm.iterationData.get("columnName")获取数据:pm.test("Check userId and title", function () {
const jsonData = pm.response.json();
pm.expect(jsonData.userId).to.eql(parseInt(pm.iterationData.get("userId")));
pm.expect(jsonData.title).to.eql(pm.iterationData.get("title"));
});
测试结果报告
通过以上步骤,可在Ubuntu环境下实现Postman自动化测试,覆盖从单接口到多接口、从手动到集成的全流程自动化需求。