首页主机资讯Ubuntu上Postman的脚本编写技巧有哪些

Ubuntu上Postman的脚本编写技巧有哪些

时间2025-12-08 18:31:06发布访客分类主机资讯浏览433
导读:Ubuntu上Postman脚本编写技巧 一 环境与脚本基础 在Ubuntu上可通过多种方式安装与启动Postman(如Snap:sudo snap install postman;或下载Linux 64位包解压至**/opt并创建桌面启...

Ubuntu上Postman脚本编写技巧

一 环境与脚本基础

  • 在Ubuntu上可通过多种方式安装与启动Postman(如Snap:sudo snap install postman;或下载Linux 64位包解压至**/opt并创建桌面启动器),安装完成后即可在界面中编写脚本。脚本分为两类:在请求发送前执行的Pre-request Script**,与在收到响应后执行的Tests。Postman脚本运行在沙盒化的JavaScript环境中,支持常用语法(如if/else、for/while、try/catch、JSON、Date、正则),并提供pm对象用于操作变量、发送请求与断言;内置Chai断言库(如pm.expect)。注意沙盒不支持DOM/浏览器APINode.js部分特性,且脚本为同步执行,不支持async/await。常用变量作用域优先级为:本地变量 > 迭代数据变量 > 环境变量 > 集合变量 > 全局变量

二 Pre-request与Tests常用写法

  • 动态设置请求头与参数(Pre-request)
    • 从环境读取token并注入Authorization头:
      const token = pm.environment.get("token");
      
      pm.request.headers.add({
       key: "Authorization", value: "Bearer " + token }
          );
          
      
    • 动态追加查询参数(示例取集合变量userId):
      const userId = pm.collectionVariables.get("userId");
      
      pm.request.url.query.add({
       key: "userId", value: userId }
          );
          
      
  • 响应断言与性能阈值(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));
          
      
    • JSON字段与内容校验:
      const json = pm.response.json();
          
      pm.test("User ID present", () =>
           pm.expect(json.id).to.eql(pm.collectionVariables.get("userId")));
          
      pm.test("Response has expected field", () =>
           pm.expect(json).to.have.property("name"));
          
      
  • 变量读写与模板替换
    • 作用域读写与批量查看:
      pm.environment.set("token", "abc123");
          
      pm.globals.set("base_url", "https://api.example.com");
          
      console.log(pm.variables.toObject());
      
      
    • 在URL/Header/Body中使用**{ { 变量名} } 占位符,脚本中通过pm.variables.replaceIn进行替换;对象/数组请JSON.stringify后存储,读取时再JSON.parse**。
  • 在Tests中发起请求(回调风格)
    • 常用于获取动态令牌或前置数据:
      pm.sendRequest("https://postman-echo.com/get", (err, res) =>
       {
      
        if (err) {
           console.error(err);
           return;
       }
          
        pm.test("Echo status is 200", () =>
           pm.expect(res.code).to.equal(200));
          
        // 将结果写入变量供后续请求使用
        pm.environment.set("echoId", res.json().args.id);
      
      }
          );
          
      
  • 可视化展示
    • 使用pm.visualizer.set渲染响应数据:
      const tpl = `<
          h3>
      {
      {
      res.name}
      }
          <
          /h3>
          <
          p>
      {
      {
      res.email}
      }
          <
          /p>
          `;
      
      pm.visualizer.set(tpl, {
       res: pm.response.json() }
          );
          
      
  • 工作流控制
    • 通过postman.setNextRequest串联请求或结束流程(按请求名或ID):
      // 成功后跳转
      postman.setNextRequest("GetUserDetail");
          
      // 失败短路
      // postman.setNextRequest(null);
      
      
  • 动态变量
    • 在脚本中使用诸如**{ { $guid} } 、{ { $timestamp} } 、{ { $randomInt} } **等动态变量生成测试数据。

三 调试与排错

  • 使用Postman Console(View → Console)查看console.log输出与错误堆栈;在脚本中合理打印关键变量与分支走向。
  • 采用try-catch-finally保护解析与业务逻辑,必要时使用**pm.test.error()**显式标记失败,避免静默通过。
  • 利用内置的**代码片段(Code Snippets)**快速插入常用断言与请求片段,减少手写错误。
  • 理解脚本执行顺序:集合前置脚本 → 文件夹前置脚本 → 请求前置脚本 → 集合测试 → 文件夹测试 → 请求测试,据此排查变量未生效或作用域覆盖问题。

四 自动化与CI集成

  • 使用Newman在命令行批量运行集合与环境,并生成报告:
    # 安装
    npm install -g newman
    
    # 运行并指定环境、生成HTML报告
    newman run collection.json -e environment.json -r cli,html
    
  • GitHub Actions等CI中执行:
    name: API Tests
    on: [push, pull_request]
    jobs:
      api-test:
        runs-on: ubuntu-latest
        steps:
          - uses: actions/checkout@v4
          - uses: actions/setup-node@v4
            with: {
     node-version: "18" }
        
          - run: npm i -g newman
          - run: newman run collection.json -e environment.json --reporters cli,html
    
  • 建议将集合与环境纳入版本控制,配合**数据文件(CSV/JSON)**做数据驱动测试,提升覆盖率与可维护性。

五 实践建议与易错点

  • 保持脚本幂等:避免在Tests中修改会影响后续请求的全局/环境变量,必要时使用本地变量或复制副本。
  • 统一命名规范作用域:明确变量放在环境、集合还是本地,减少覆盖与歧义。
  • 处理异步与超时:Tests中发起的请求使用回调;涉及延时请在回调内完成断言,避免依赖setTimeout的竞态。
  • 处理非JSON响应:先判断Content-Type,再选择pm.response.text()/json(),避免解析异常。
  • 管理敏感信息:优先使用环境/集合变量Secrets管理,不要将token/密钥硬编码在脚本中。
  • 报告与可追溯:在CI中启用HTML/JSON报告并归档,便于回溯失败用例与请求链路。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Ubuntu上Postman的脚本编写技巧有哪些
本文地址: https://pptw.com/jishu/766181.html
Postman在Ubuntu中的集成测试如何进行 Ubuntu下Postman的响应数据如何解析

游客 回复需填写必要信息