温馨提示×

如何用Ubuntu Postman进行数据驱动测试

小樊
39
2025-12-12 06:51:48
栏目: 智能运维

在 Ubuntu 上使用 Postman 进行数据驱动测试

一 准备数据与集合

  • 创建数据文件:支持 CSVJSON。CSV 首行为列名,Postman 会将其作为数据字段;建议使用 UTF-8 编码,避免中文乱码。示例:
    • CSV(data.csv)
      username,password
      user1,pass1
      user2,pass2
      
    • JSON(data.json)
      [
        { "username": "user1", "password": "pass1" },
        { "username": "user2", "password": "pass2" }
      ]
      
  • 在 Postman 中新建 Collection,添加请求,在请求参数、请求头或请求体中使用 {{变量名}} 引用数据字段(如 {{username}}{{password}})。在请求的 Tests 标签准备断言脚本(如检查状态码、响应体字段等)。

二 在 Postman 图形界面运行数据驱动测试

  • 打开 Collection Runner:在集合右侧点击 Run 或顶部菜单 Runner
  • 选择集合与请求,配置运行选项:
    • Environment:选择环境(如 dev/test)。
    • Iterations:留空,选择数据文件后会自动按数据行数迭代。
    • Delay:每次迭代间隔(毫秒)。
    • Data:选择准备好的 CSV/JSON 数据文件,可预览数据是否正确。
  • 点击 Start Run 执行,查看 Test Results 面板中的通过/失败与日志,定位失败的用例与数据行。

三 在 Ubuntu 终端使用 Newman 批量运行

  • 安装 Node.jsnpm(略),然后全局安装 Newman
    npm install -g newman
    
  • 导出 Postman CollectionJSON(Collection v2.1 推荐),与数据文件同目录。
  • 终端执行示例:
    # 基本运行
    newman run my-api-tests.json -d data.csv
    
    # 使用环境变量文件
    newman run my-api-tests.json -d data.json -e dev.env.json
    
    # 生成 HTML 报告(需 newman-reporter-html)
    npm install -g newman-reporter-html
    newman run my-api-tests.json -d data.csv -r html --reporter-html-export report.html
    
  • 将命令放入 package.jsonMakefile 脚本,便于在 Jenkins/GitLab CI 等 CI/CD 中调用。

四 关键脚本示例

  • 使用数据字段进行断言(Tests 标签):
    pm.test("Status code is 200", () => {
        pm.response.to.have.status(200);
    });
    
    pm.test("Response contains expected username", () => {
        const json = pm.response.json();
        pm.expect(json.username).to.eql(data.username);
    });
    
  • Pre-request Script 中读取数据并写入变量(也可用环境/集合变量):
    pm.collectionVariables.set("username", pm.iterationData.get("username"));
    pm.collectionVariables.set("password", pm.iterationData.get("password"));
    
  • 动态设置请求头(示例):
    pm.request.headers.add({
        key: "Authorization",
        value: "Bearer " + pm.environment.get("token")
    });
    
  • 控制台调试输出:
    console.log("Current username:", pm.iterationData.get("username"));
    

以上脚本使用 pm 对象完成前置处理、断言与日志输出,适配数据驱动迭代执行。

五 常见问题与最佳实践

  • 编码与格式:CSV 请使用 UTF-8;文件末尾避免空行;CSV 中非数值会被自动加引号,字符串无需手动加引号;JSON 更适合复杂结构与布尔类型数据。
  • 字段引用:请求参数用 {{字段名}};脚本中用 data.字段名 读取当前迭代数据。
  • 迭代与数据:选择数据文件后 Iterations 会自动匹配数据行数;CSV 首行为列名会被自动忽略/作为字段名。
  • 运行配置:合理设置 Delay 避免接口限流;在 Runner 中预览数据,确认列名与请求变量一致。
  • 持续集成:在 Jenkins/GitLab CI 中使用 Newman 执行并收集报告,实现自动化回归。

0