温馨提示×

Ubuntu下Postman的自动化测试如何实现

小樊
37
2025-12-08 07:37:40
栏目: 智能运维

Ubuntu下Postman自动化测试实现

一 环境准备与安装

  • Ubuntu 上可通过多种方式安装 Postman,任选其一:
    • Snap:sudo snap install postman --classic
    • APT:导入 GPG 并添加仓库后安装
      • 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
    • Flatpak:
      • sudo apt install flatpak
      • flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
      • flatpak install flathub com.postman.Postman
  • 安装完成后可直接启动 Postman 进行接口调试与脚本编写。

二 编写自动化测试脚本

  • Postman 脚本基于 JavaScript,在请求前后执行:
    • Pre-request Script:请求前设置变量、签名、请求头等
    • Tests:响应后做断言与校验
  • 常用脚本示例:
    • 状态码与响应时间
      • pm.test(“Status code is 200”, () => pm.response.to.have.status(200));
      • pm.test(“Response time < 200ms”, () => pm.expect(pm.response.responseTime).to.be.below(200));
    • 响应体字段与结构
      • const json = pm.response.json();
      • pm.test(“Has id field”, () => pm.expect(json).to.have.property(“id”));
      • pm.test(“Name equals”, () => pm.expect(json.name).to.eql(“test_user”));
    • 响应头
      • pm.test(“Content-Type is JSON”, () => pm.response.to.have.header(“Content-Type”, /application/json/));
    • 变量与动态数据
      • Pre-request:pm.environment.set(“token”, “abc123”);
      • Tests:pm.environment.set(“userId”, json.id);
    • 集合/数据变量
      • const uid = pm.collectionVariables.get(“userId”);
      • pm.request.url.query.add({ key: “userId”, value: uid });
  • 调试技巧
    • 使用 console.log 输出调试信息,在 Postman 控制台查看。

三 在桌面端运行与批量执行

  • 组织用例:将相关请求放入 Collection,为不同环境创建 Environment(如开发/测试/生产)。
  • 批量运行:使用 Collection Runner 选择集合与环境,配置迭代次数、数据文件等,一键执行并查看断言结果。
  • 数据驱动:通过 CSV/JSON 数据文件 驱动多组参数执行,实现数据驱动测试。

四 命令行与CI集成

  • 使用 Newman(Postman 命令行工具)在 Ubuntu 服务器或 CI 环境执行集合:
    • 安装:npm install -g newman
    • 执行:newman run your_collection.json
  • 生成报告并集成到 GitHub Actions
    • 示例工作流要点:
      • 触发:push / pull_request
      • 步骤:安装 Node、检出代码、安装依赖、运行 Newman(CLI + JUnit 报告)
      • 上传报告:actions/upload-artifact
    • 参考命令:
      • newman run “your_postman_collection.json” --reporters cli,junit --reporter-junit-export report.xml
  • 适用场景:无头环境自动化、定时任务、代码合并门禁、流水线质量门禁。

五 实战示例 注册登录与结果校验

  • 场景:注册用户 → 登录获取 token → 访问受保护接口 → 校验结果
  • 脚本骨架(可放入相应请求的 Tests 或 Pre-request 中):
    • 注册
      • pm.sendRequest({ url: pm.environment.get(“apiBaseUrl”) + “/register”, method: “POST”, body: JSON.stringify({ email: user${Date.now()}@test.com, password: “pwd123” }), headers: { “Content-Type”: “application/json” } }, (err, res) => { pm.expect(res.status).to.eql(200); pm.expect(res.json().email).to.include(“@test.com”); });
    • 登录并设环境变量
      • pm.sendRequest({ url: pm.environment.get(“apiBaseUrl”) + “/login”, method: “POST”, body: JSON.stringify({ email: “user123@test.com”, password: “pwd123” }), headers: { “Content-Type”: “application/json” } }, (err, res) => { pm.expect(res.json().token).to.exist; pm.environment.set(“authToken”, res.json().token); });
    • 访问用户信息并校验
      • pm.sendRequest({ url: pm.environment.get(“apiBaseUrl”) + “/user”, method: “GET”, headers: { “Authorization”: Bearer ${pm.environment.get("authToken")} } }, (err, res) => { pm.expect(res.json().email).to.include(“@test.com”); });
  • 说明:通过 pm.sendRequest 可在脚本中串联多个接口,实现流程化自动化测试。

0