温馨提示×

Ubuntu中Postman如何使用脚本功能

小樊
41
2025-10-18 07:13:56
栏目: 智能运维

Pre-request Script(预请求脚本)
Pre-request Script 在请求发送前执行,主要用于动态配置请求参数、生成认证令牌或设置环境变量,为请求做好准备。

  • 核心用途:生成动态数据(如随机字符串、时间戳)、设置请求头(如 Authorization)、修改请求 URL 参数、初始化环境/全局变量。
  • 常用方法
    • pm.environment.set("key", "value"):设置环境变量(如存储 token);
    • pm.request.headers.add({key: "HeaderName", value: "HeaderValue"}):添加请求头;
    • Math.random().toString(36).substr(2, 10):生成 10 位随机字符串;
    • Math.floor(Date.now() / 1000):获取当前时间戳(秒级)。
  • 示例:生成 32 位纯数字随机数并设置为全局变量,用于接口幂等性校验。

Tests Script(测试脚本)
Tests Script 在请求响应后执行,用于验证响应的正确性(如状态码、响应体内容),是自动化测试的核心环节。

  • 核心用途:断言响应状态码、检查响应时间、验证响应体数据、提取响应数据并设置为变量。
  • 常用方法
    • pm.test("Test Name", function() { ... }):定义测试用例;
    • pm.response.to.have.status(200):断言状态码为 200;
    • pm.expect(jsonData.key).to.eql(expectedValue):断言响应体中的字段值;
    • pm.response.json():解析 JSON 格式的响应体;
    • pm.environment.set("key", "value"):将响应数据存储为环境变量(供后续请求使用)。
  • 示例:验证接口返回的状态码为 200,且响应体中包含预期的用户 ID。

环境变量与变量交互
Postman 的脚本可通过 pm.environment(环境变量)和 pm.globals(全局变量)实现数据共享,适应多环境(如开发、测试、生产)测试需求。

  • 设置变量pm.environment.set("token", "abc123")(仅在当前环境生效)、pm.globals.set("baseUrl", "https://api.example.com")(全局生效);
  • 获取变量const token = pm.environment.get("token")const baseUrl = pm.globals.get("baseUrl")
  • 应用场景:在 Pre-request Script 中使用环境变量设置请求头(如 Authorization: Bearer ${token}),在 Tests Script 中将响应数据存储为环境变量供后续请求使用。

脚本调试技巧
调试是确保脚本正确性的关键,Postman 提供了多种调试方法:

  • Postman Console:点击 Postman 窗口底部的“Console”标签,查看脚本执行过程中的 console.log() 输出(如变量值、执行状态);
  • 测试结果标签:发送请求后,点击响应面板的“Tests”标签,查看测试用例的通过/失败情况(通过的用例显示绿色,失败的显示红色);
  • 断点调试:在脚本编辑器中点击行号左侧设置断点,逐步执行脚本并查看变量值(适用于复杂逻辑调试)。

运行测试集合
集合运行器可批量执行多个请求及其脚本,模拟真实场景并生成测试报告。

  • 操作步骤
    1. 在 Postman 左侧面板选择需要运行的集合;
    2. 点击顶部菜单栏的“Runner”(运行器);
    3. 在弹出的窗口中选择集合、迭代次数(如 10 次)、环境(如“测试环境”);
    4. 点击“Run”按钮,查看集合运行结果(包括每个请求的测试通过率、执行时间)。

高级用法:数据驱动测试
结合 CSV/JSON 文件实现数据驱动测试,用不同数据重复执行请求,验证接口的稳定性。

  • 操作步骤
    1. 准备数据文件(如 test-data.csv,包含 usernamepassword 字段);
    2. 在集合运行器中点击“Select File”,上传数据文件;
    3. 在脚本中使用 pm.iterationData.get("fieldName") 获取当前迭代的数据(如 const username = pm.iterationData.get("username"));
    4. 将数据用于请求(如设置请求体的 username 字段)。

0