一、设置变量和获取变量
// 设置全局变量
pm.globals.set("variable_key", "variable_value");
// 获取全局变量
var globalVar = pm.globals.get("variable_key");
// 设置环境变量
pm.environment.set("variable_key", "variable_value");
// 获取环境变量
var envVar = pm.environment.get("variable_key");
// 设置集合变量
pm.collectionVariables.set("variable_key", "variable_value");
// 获取集合变量
var collectionVar = pm.collectionVariables.get("variable_key");
// 设置局部变量(仅在当前请求中有效)
pm.variables.set("variable_key", "variable_value");
// 获取变量(自动从最近的作用域获取)
var variable = pm.variables.get("variable_key");
二、 在 Pre-request Script 中设置请求头和请求体
设置请求头
// 添加单个请求头
pm.request.headers.add({
key: 'Authorization',
value: 'Bearer ' + pm.environment.get('token')
});
// 添加多个请求头
pm.request.headers.add({
key: 'X-API-Key',
value: pm.environment.get('api_key')
});
pm.request.headers.add({
key: 'X-Request-ID',
value: pm.variables.get('request_id')
});
// 移除请求头
pm.request.headers.remove('X-Deprecated-Header');
// 更新已存在的请求头
pm.request.headers.upsert({
key: 'Content-Type',
value: 'application/json; charset=utf-8'
});
// 批量设置请求头
const headers = [
{key: 'X-Client-Version', value: '1.0.0'},
{key: 'X-Platform', value: 'web'},
{key: 'X-Timestamp', value: Date.now().toString()}
];
headers.forEach(header => {
pm.request.headers.add(header);
});
设置请求体
// 设置 JSON 请求体
const requestBody = {
name: pm.variables.get('user_name'),
email: pm.variables.get('user_email'),
timestamp: Date.now(),
metadata: {
source: 'postman',
version: '1.0'
}
};
pm.request.body.update({
mode: 'raw',
raw: JSON.stringify(requestBody),
options: {
raw: {
language: 'json'
}
}
});
//简单粗暴一点
pm.request.body = JSON.stringify(requestBody);
// 设置表单数据
pm.request.body.update({
mode: 'formdata',
formdata: [
{key: 'username', value: pm.environment.get('username')},
{key: 'password', value: pm.environment.get('password')},
{key: 'remember_me', value: 'true'}
]
});
// 设置 URL 编码表单
pm.request.body.update({
mode: 'urlencoded',
urlencoded: [
{key: 'grant_type', value: 'password'},
{key: 'username', value: pm.environment.get('username')},
{key: 'password', value: pm.environment.get('password')}
]
});
三、在 Tests 中处理响应码和响应数据
检查响应码
// 基本响应码检查
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
pm.test("Status code is successful", function () {
pm.expect(pm.response.code).to.be.oneOf([200, 201, 202]);
});
// 条件性测试
if (pm.response.code === 200) {
pm.test("Response time is less than 200ms", function () {
pm.expect(pm.response.responseTime).to.be.below(200);
});
pm.test("Response has required fields", function () {
var jsonData = pm.response.json();
pm.expect(jsonData).to.have.property('id');
pm.expect(jsonData).to.have.property('name');
pm.expect(jsonData).to.have.property('email');
});
}

image.png
参考:https://apifox.com/apiskills/writing-postman-test-scripts/
响应数据处理
const jsonData = pm.response.json();
// 检查属性是否存在
pm.expect(jsonData).to.have.property('success', true);
pm.expect(jsonData).to.have.property('data');
// 精确值匹配
pm.expect(jsonData.status).to.equal('success');
pm.expect(jsonData.code).to.equal(200);
pm.expect(jsonData.active).to.be.true;
四、常见json处理
//获取response的json数据
const jsonData = pm.response.json();
//json转string
const jsonString = JSON.stringify(jsonData);
//string转json
const jsonData= JSON.parse(jsonString);
//json数组长度
var len = jsonData.obj.length;
//遍历json数组
for (var i = 0; i < jsonData.data.length; i++) {
data = jsonData.data[i];
}
//遍历json数组
for (var item of jsonData.items) {
console.log(item);
}
//遍历json数组
jsonData.data.forEach((item, index) => {
console.log(item);
console.log(index);
});
五、控制请求执行流程
//实现循环调用,并通过变量控制循环次数
const count = Number(pm.collectionVariables.get("count")) ;
let index = Number(pm.collectionVariables.get("index"));
if (index < count) {
postman.setNextRequest("下一条要执行的API");
//循环一次,计数+1
pm.collectionVariables.set("index", index + 1);
} else {
// 退出循环
postman.setNextRequest(null);
}
六、在脚本中发送 HTTP 请求
//发送简单的 GET 请求
const userRequest = {
url: 'https://api.example.com/users/current',
method: 'GET',
header: {
'Authorization': 'Bearer ' + pm.environment.get("token")
}
};
pm.sendRequest(userRequest, function (err, response) {
if (!err && response.code === 200) {
const user = response.json();
pm.environment.set("userId", user.id);
pm.environment.set("userRole", user.role);
console.log("用户信息获取成功:", user.name);
}
});
//发送带参数的 POST 请求
const authRequest = {
url: 'https://api.example.com/auth/token',
method: 'POST',
header: {
'Content-Type': 'application/json'
},
body: {
mode: 'raw',
raw: JSON.stringify({
username: pm.environment.get("username"),
password: pm.environment.get("password")
})
}
};
pm.sendRequest(authRequest, function (err, response) {
if (err) {
console.log("认证失败:", err);
} else {
const responseJson = response.json();
if (responseJson.access_token) {
pm.environment.set("access_token", responseJson.access_token);
console.log("Token 获取成功");
}
}
});