Postman高级用法与API测试


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的质量和稳定性。


0.075499s