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自动化测试,覆盖从单接口到多接口、从手动到集成的全流程自动化需求。