Postman 接口自动化参数化,核心是用变量 替换请求中的固定值,支持环境 / 全局变量、内建变量、脚本动态生成、外部数据文件(CSV/JSON) 四种方式,配合 Collection Runner 实现批量数据驱动。
一、变量引用基础(统一语法)
所有参数化都用 {``{变量名}} 引用,可用于:
- URL、Params、Headers、Body(form-data/raw/json)
- Pre-request Script、Tests 脚本
二、四种参数化方式(从简单到批量)
1. 环境 / 全局变量(单值 / 环境切换)
适合固定配置(如 baseUrl、token)、多环境切换。
- 创建 :右上角 Environment → Manage Environments
- 全局变量:所有集合 / 环境共享
- 环境变量:仅当前环境生效(开发 / 测试 / 生产)
- 示例
- 定义:
baseUrl = https://api.test.com、token = xxx - 引用:
GET {``{baseUrl}}/users、Authorization: Bearer {``{token}}
- 定义:
2. 内建变量(快速生成随机 / 唯一值)
无需定义,直接用 {``{$变量}},适合唯一标识、时间戳。常用:
{``{$timestamp}}:当前时间戳(毫秒){``{$guid}}:全局唯一 ID{``{$randomInt}}:0--1000 随机整数{``{$randomEmail}}:随机邮箱- 示例:
username: user_{``{$timestamp}}
3. 脚本动态生成(Pre-request/Tests)
适合复杂逻辑、接口关联(如登录后取 token)。
-
Pre-request Script(请求前)
javascript
运行
// 生成动态用户名 const username = `test_${Date.now()}`; pm.environment.set("username", username); // 生成随机手机号 const phone = `138${Math.floor(Math.random() * 100000000)}`; pm.globals.set("phone", phone); -
Tests(请求后,接口关联)
javascript
运行
// 登录接口返回 token,存入环境变量 const res = pm.response.json(); pm.environment.set("token", res.data.token);
4. 外部数据文件(批量数据驱动,核心)
用 CSV/JSON 做多组测试数据,配合 Collection Runner 迭代执行。
(1)准备数据文件
-
CSV(推荐,首行是变量名)
csv
username,password,expectedCode test01,123456,200 test02,654321,200 error,000000,401 -
JSON(数组对象)
json
[ {"username":"test01","password":"123456","expectedCode":200}, {"username":"test02","password":"654321","expectedCode":200} ]
(2)请求中引用
-
URL/Params/Body:
{``{username}}、{``{password}} -
Tests 脚本:用
data.变量名读取(如data.expectedCode)javascript
运行
pm.test(`状态码为 ${data.expectedCode}`, function () { pm.response.to.have.status(data.expectedCode); });
(3)Collection Runner 执行
- 打开集合 → 点击右上角 Runner
- 选择请求 → 上传数据文件(CSV/JSON)
- 设置迭代次数(默认等于数据行数)
- 点击 Run,自动逐行执行并生成报告
三、变量优先级(避免冲突)
从高到低:本地变量 > 数据文件 > 环境变量 > 集合变量 > 全局变量Postman。
四、实战流程(完整示例)
- 定义环境变量:
baseUrl、token - 登录接口:Tests 脚本提取
token存入环境 - 业务接口:URL/Headers/Body 用
{``{变量}} - 准备 CSV 多组测试数据
- Collection Runner 上传 CSV,批量执行并断言
五、Newman 命令行参数化(CI/CD)
bash
运行
newman run 集合.json \
-e 环境.json \
-d 数据.csv \
--global-var "baseUrl=https://api.prod.com"