Postman常用测试脚本

状态码验证

javascript 复制代码
// 验证状态码=200
pm.test("Status code is 200", function () {
    pm.response.to.have.status(200);
});

响应时间验证

javascript 复制代码
// 验证响应时间<500ms
pm.test("Response time is within acceptable range", function () {
    pm.expect(pm.response.responseTime).to.be.below(500);
});

响应主体验证

javascript 复制代码
// 验证响应body包含预期值
pm.test("Response body contains expected data", function () {
    pm.expect(pm.response.text()).to.include("expected_value");
});

JSON响应验证

javascript 复制代码
// 验证响应是否有效json
pm.test("Response is valid JSON", function () {
    pm.expect(pm.response.json()).to.be.an("object");
});

请求头验证

javascript 复制代码
// 验证请求包含请求头
pm.test("Header is present in the response", function () {
    pm.response.to.have.header("header_name");
});

链接测试

javascript 复制代码
pm.test("Chaining multiple assertions", function () {
    pm.expect(pm.response.json().property1).to.eql("value1");
    pm.expect(pm.response.json().property2).to.eql("value2");
});

动态数据验证

javascript 复制代码
pm.test("Dynamic data validation", function () {
    pm.expect(pm.response.json().user_id).to.eql(pm.environment.get("user_id"));
});

从环境变量设置数据

javascript 复制代码
var jsonData = pm.response.json();
pm.environment.set("companyIdToDelete", jsonData.data._id);

响应结构验证

javascript 复制代码
pm.test("Response schema validation", function () {
    const schema = {
        "type": "object",
        "properties": {
            "property1": { "type": "string" },
            "property2": { "type": "number" }
        }
    };
    pm.expect(tv4.validate(pm.response.json(), schema)).to.be.true;
});

动态响应验证

javascript 复制代码
pm.test("Dynamic response validation", function () {
    var responseBody = pm.response.json();
    var dynamicValue = responseBody.dynamic_property;

    pm.expect(dynamicValue).to.equal(pm.variables.get("expected_dynamic_value"));
});

API版本验证

javascript 复制代码
var apiVersion = "v2";
pm.test("API versioning validation", function () {
    pm.request.headers.add({ key: "Accept-Version", value: apiVersion });
    pm.sendRequest(function (response) {
        pm.expect(response.status).to.equal(200);
        pm.expect(response.json().version).to.equal(apiVersion);
    });
});

文件上传

javascript 复制代码
// Test file upload
pm.test("File upload validation", function () {
    var formData = {
        file: {
            value: pm.globals.get("fileData"),
            options: {
                filename: "sample.txt",
                contentType: "text/plain"
            }
        }
    };

    pm.sendRequest({
        url: "https://api.example.com/upload",
        method: "POST",
        body: formData
    }, function (response) {
        pm.expect(response.status).to.equal(200);
        pm.expect(response.json().success).to.be.true;
    });
});

身份和授权验证

javascript 复制代码
pm.test("Authentication and authorization", function () {
    var authToken = pm.environment.get("authToken");

    pm.request.headers.add({ key: "Authorization", value: "Bearer " + authToken });
    pm.sendRequest(function (response) {
        pm.expect(response.status).to.equal(200);
        pm.expect(response.json().authorized).to.be.true;
    });
});

数据提取和转换

javascript 复制代码
pm.test("Data extraction and transformation", function () {
    var responseArray = pm.response.json().data;
    var transformedData = responseArray.map(function (item) {
        return {
            id: item.id,
            name: item.first_name + " " + item.last_name"
        };
    });
    pm.expect(transformedData[0].name).to.include("John");
    pm.environment.set("transformedData", JSON.stringify(transformedData));
});

会话管理

javascript 复制代码
var sessionToken;

pm.test("Login and session management", function () {
    // 提取登录会话token
    sessionToken = pm.response.json().session_token;
    pm.environment.set("sessionToken", sessionToken);
});

pm.test("Authenticated request using session token", function () {
    // 使用保存的会话请求
    pm.request.headers.add({ key: "Authorization", value: "Bearer " + sessionToken });
    pm.sendRequest(function (response) {
        pm.expect(response.status).to.equal(200);
    });
});

分页测试

javascript 复制代码
pm.test("Pagination testing", function () {
    var response = pm.response.json();
    var currentPage = response.page;
    var totalPages = response.total_pages;
    pm.expect(currentPage).to.be.at.least(1);
    pm.expect(currentPage).to.be.at.most(totalPages);
});

负载测试

javascript 复制代码
var concurrentRequests = 10;

pm.test("Load testing", function () {
    var requests = [];

    for (var i = 0; i < concurrentRequests; i++) {
        requests.push(pm.sendRequest);
    }

    Promise.all(requests).then(function (responses) {
        responses.forEach(function (response) {
            pm.expect(response.status).to.equal(200);
        });
    });
});

数据库验证

javascript 复制代码
var mockDatabase = [
    { id: 1, name: "Item 1" },
    { id: 2, name: "Item 2" }
];

pm.test("Database validation", function () {
    var response = pm.response.json();

    mockDatabase.forEach(function (item) {
        var matchingItem = response.find(function (responseItem) {
            return responseItem.id === item.id;
        });
        pm.expect(matchingItem.name).to.equal(item.name);
    });
});
相关推荐
inter_peng2 小时前
【DICOM网络问题】基于tcpdump和wireshark解决服务器无法连接打印机打印胶片的问题
测试工具·wireshark·tcpdump
BINGCHN2 小时前
流量分析入门(二):wireshark的使用
网络·测试工具·wireshark
卓码软件测评3 小时前
自动化软件API测试部署Postman和Jenkins集成
测试工具·自动化·jenkins·测试用例·postman·软件需求
陈辛chenxin3 小时前
【接口测试】Postman教程
python·selenium·测试工具·postman·可用性测试
程序员小远3 小时前
Postman详解
自动化测试·软件测试·python·测试工具·测试用例·接口测试·postman
2501_915909063 小时前
iOS App 测试工具全景指南,构建从开发、性能到系统级调试的多工具协同测试体系
android·测试工具·ios·小程序·uni-app·iphone·webview
游戏开发爱好者86 小时前
Fiddler抓包工具完整教程 HTTPHTTPS抓包、代理配置与API调试实战技巧(开发者进阶指南)
前端·测试工具·ios·小程序·fiddler·uni-app·webview
MCM-RL1111117 小时前
自由落体颅脑损伤打击器 自由落体打击器 脑损伤打击器 自由颅脑损伤落体操作臂
嵌入式硬件·物联网·测试工具·安全·信号处理
AI绘画小338 小时前
【网络安全】Wireshark 抓包过滤:源 / 目的 IP 过滤 + 命令大全
数据库·tcp/ip·测试工具·安全·web安全·wireshark
Pixeler8 小时前
[特殊字符] Selenium 实战教程:等待与表单元素操作
chrome·selenium·测试工具