Postman高级用法与API测试
Postman不仅是一个发送HTTP请求的工具,更是一个完整的API开发和测试平台。掌握其高级功能,可以大大提升API开发和测试的效率。本文将介绍Postman的高级用法和自动化测试实践。
一、环境变量与全局变量
// 环境变量配置
// Development环境
base_url: http://localhost:8080
api_key: dev_key_123
// Production环境
base_url: https://api.example.com
api_key: prod_key_456
// 请求中使用变量
// URL: {{base_url}}/api/users
// Header: Authorization: Bearer {{api_key}}
// 在脚本中设置变量
pm.environment.set("user_id", response.id);
pm.globals.set("auth_token", response.token);
// 获取变量
var token = pm.environment.get("auth_token");
二、Pre-request Script
// 自动生成签名
var timestamp = Math.floor(Date.now() / 1000);
var apiKey = pm.environment.get("api_key");
var apiSecret = pm.environment.get("api_secret");
var sign = CryptoJS.MD5(apiKey + timestamp + apiSecret).toString();
pm.environment.set("timestamp", timestamp);
pm.environment.set("sign", sign);
// 自动刷新Token
if (!pm.environment.get("auth_token") || isTokenExpired()) {
pm.sendRequest({
url: pm.environment.get("base_url") + "/auth/refresh",
method: "POST",
header: { "Content-Type": "application/json" },
body: {
mode: "raw",
raw: JSON.stringify({
refresh_token: pm.environment.get("refresh_token")
})
}
}, function(err, response) {
pm.environment.set("auth_token", response.json().access_token);
});
}
三、测试脚本
// 基础断言
pm.test("Status code is 200", function() {
pm.response.to.have.status(200);
});
pm.test("Response has correct structure", function() {
var json = pm.response.json();
pm.expect(json).to.have.property("code");
pm.expect(json.data).to.be.an("array");
pm.expect(json.data.length).to.be.above(0);
});
pm.test("Response time is acceptable", function() {
pm.expect(pm.response.responseTime).to.be.below(500);
});
// Schema验证
var schema = {
type: "object",
required: ["code", "data"],
properties: {
code: { type: "integer", minimum: 0 },
data: {
type: "array",
items: {
type: "object",
required: ["id", "name"],
properties: {
id: { type: "integer" },
name: { type: "string" }
}
}
}
}
};
pm.test("Schema is valid", function() {
pm.expect(tv4.validate(pm.response.json(), schema)).to.be.true;
});
四、集合运行器
// Newman命令行运行
newman run "API Tests.postman_collection.json" \
-e "Production.postman_environment.json" \
--reporters cli,junit \
--reporter-junit-export results.xml \
--bail
// 集成到CI/CD
// package.json
"scripts": {
"test:api": "newman run collection.json -e env.json"
}
// GitHub Actions
- name: Run API Tests
run: npm run test:api
Postman的强大远超大多数人的使用范围。通过合理使用变量、脚本和自动化测试,可以建立完善的API测试体系,确保API的质量和稳定性。