关于PostMan中Tests脚本的使用

这篇具有很好参考价值的文章主要介绍了关于PostMan中Tests脚本的使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

不得不说PostMan真的是一个强大的接口测试工具,深得人心。

小编也在闲暇之余整理了一些有关于PostMan中的Tests脚本的示例,希望能帮助到热爱学习热爱工作的各位。

  1. 状态码验证:
    pm.test("Status code is 200", function () {
        pm.response.to.have.status(200);
    });
  2. 响应时间验证:
    pm.test("Response time is less than 500ms", function () {
        pm.expect(pm.response.responseTime).to.be.below(500);
    });
  3. JSON 响应体验证:
    pm.test("Response body has a valid key", function () {
        var jsonData = pm.response.json();
        pm.expect(jsonData).to.have.property('keyName');
    });
  4. 字符串匹配验证:
    pm.test("Response body contains expected text", function () {
        pm.expect(pm.response.text()).to.include("expectedText");
    });
  5. 数组长度验证
    pm.test("Response body has an array with at least 3 elements", function () {
        var jsonData = pm.response.json();
        pm.expect(jsonData.arrayProperty).to.have.lengthOf.at.least(3);
    });
  6. 数据类型验证:
    pm.test("Response body property has the correct data type", function () {
        var jsonData = pm.response.json();
        pm.expect(jsonData.propertyName).to.be.a('number');
    });
  7. 头部信息验证
    pm.test("Content-Type header is present", function () {
        pm.response.to.have.header("Content-Type");
    });
  8. 环境变量验证:
    pm.test("Environment variable has expected value", function () {
        pm.expect(pm.environment.get("variableName")).to.equal("expectedValue");
    });
  9. 响应体 JSON Schema 验证:
    pm.test("Response body follows JSON schema", function () {
        var jsonData = pm.response.json();
        var schema = {
            "type": "object",
            "properties": {
                "name": { "type": "string" },
                "age": { "type": "number" }
            },
            "required": ["name", "age"]
        };
        pm.expect(tv4.validate(jsonData, schema)).to.be.true;
    });
    //此示例使用 tv4 库进行 JSON Schema 验证。
  10. 多个条件的组合验证:
    pm.test("Multiple conditions combined", function () {
        var jsonData = pm.response.json();
    
        // Check multiple conditions
        pm.expect(jsonData.property1).to.equal("expectedValue1");
        pm.expect(jsonData.property2).to.be.an('array').that.includes('expectedValue2');
        pm.expect(jsonData.property3).to.have.lengthOf.at.most(5);
    });
  11. 日期格式验证:
    pm.test("Date format is valid", function () {
        var jsonData = pm.response.json();
        var dateFormat = /\d{4}-\d{2}-\d{2}/; // Example: YYYY-MM-DD
        pm.expect(jsonData.dateProperty).to.match(dateFormat);
    });
  12. 断言异常情况:有时,你可能需要验证 API 返回的错误状态。
    pm.test("Check for an error response", function () {
        pm.expect(pm.response.json().status).to.equal("error");
    });
  13. 验证数组元素
    pm.test("All items in the array meet a certain condition", function () {
        var jsonData = pm.response.json();
        pm.expect(jsonData.items).to.satisfy(function (items) {
            return items.every(function (item) {
                return item.property > 0;
            });
        });
    });
  14. 验证响应头信息:
    pm.test("Check for a specific header value", function () {
        pm.expect(pm.response.headers.get("Content-Type")).to.equal("application/json");
    });
  15. 环境变量和全局变量的更新:可以根据 API 响应更新环境变量或全局变量,以便后续请求使用更新后的值
    pm.test("Update environment variable based on response", function () {
        var jsonData = pm.response.json();
        pm.environment.set("variableName", jsonData.propertyToUpdate);
    });
  16. 文件上传后的验证:如果你的 API 支持文件上传,可以验证上传操作是否成功
    pm.test("Check if file upload was successful", function () {
        var jsonData = pm.response.json();
        pm.expect(jsonData.status).to.equal("success");
        pm.expect(jsonData.uploadedFiles.length).to.be.above(0);
    });
  17. 验证重定向:如果 API 返回了重定向响应,你可以验证重定向的状态码和目标地址。
    pm.test("Check for a redirect", function () {
        pm.expect(pm.response.code).to.be.oneOf([301, 302]);
        pm.expect(pm.response.headers.get("Location")).to.equal("https://newlocation.com");
    });
  18. 使用正则表达式进行文本匹配:使用正则表达式来验证响应体中的文本是否符合特定的模式。
    pm.test("Check for a specific pattern in the response body", function () {
        pm.expect(pm.response.text()).to.match(/PatternToMatch/);
    });
  19. 数据存在性验证:确保特定的键存在于响应体中。
    pm.test("Check if specific data exists in the response", function () {
        var jsonData = pm.response.json();
        pm.expect(jsonData).to.include.keys("expectedKey");
    });
  20. 比较两个响应体
    pm.test("Compare two response bodies", function () {
        var jsonData1 = pm.response.json();
        var jsonData2 = pm.iterationData.get("expectedResponse");
        pm.expect(jsonData1).to.eql(jsonData2);
    });
  21. 验证响应时间是否在一定范围内:确保 API 的响应时间在预期的范围内。
    pm.test("Response time is within an acceptable range", function () {
        pm.expect(pm.response.responseTime).to.be.within(100, 1000); // 100ms to 1000ms
    });
  22. 验证响应头信息是否包含特定值:检查响应头信息中是否包含特定值。
    pm.test("Check for a specific value in the response header", function () {
        pm.expect(pm.response.headers.get("Content-Type")).to.include("application/json");
    });
  23. 验证响应体中数组元素的属性:遍历数组中的每个元素并验证其属性。
    pm.test("Check properties of each item in the array", function () {
        var jsonData = pm.response.json();
        jsonData.forEach(function (item) {
            pm.expect(item).to.have.property("propertyName");
        });
    });
  24. 验证响应体中对象的值是否满足条件:确保对象的属性值满足特定条件。
    pm.test("Check if object properties meet certain conditions", function () {
        var jsonData = pm.response.json();
        pm.expect(jsonData.propertyName).to.satisfy(function (value) {
            return value > 0 && value < 100;
        });
    });
  25. 使用外部库进行验证:如果需要进行更复杂的验证,你可以引入外部库并使用它来验证响应。
    pm.test("Use external library for advanced validation", function () {
        var jsonData = pm.response.json();
        var isValid = externalLibrary.validate(jsonData);
        pm.expect(isValid).to.be.true;
    });
  26. 测试脚本中的日志记录:在测试脚本中使用 console.log 记录信息,有助于调试和定位问题。
    pm.test("Logging information for debugging", function () {
        var jsonData = pm.response.json();
        console.log("Response data:", jsonData);
        pm.expect(jsonData).to.have.property("expectedKey");
    });
  27. 验证响应头信息中是否包含特定的 Cookie:
    pm.test("Check for a specific cookie in the response headers", function () {
        pm.expect(pm.response.headers.has("Set-Cookie")).to.be.true;
    });
  28. 使用 Chai 库进行更丰富的断言:如果你想使用更丰富的断言功能,可以结合 Chai 库 使用。首先,在 Postman 的 "Pre-request Script" 或 "Tests" 中添加以下代码:
    // 引入 Chai 库
    var chai = require('chai');
    
    // 使用 Chai 断言库的 BDD 风格
    var expect = chai.expect;

            然后,你可以在测试脚本中使用 Chai 提供的更多断言功能:使用 Chai 能够提供更多的断言选项和更清晰的测试语法。

    pm.test("Use Chai for advanced assertions", function () {
        var jsonData = pm.response.json();
    
        // 使用 Chai 断言
        expect(jsonData).to.have.property("propertyName").that.is.a("string");
        expect(jsonData.arrayProperty).to.be.an("array").that.includes("expectedValue");
    });
  29. 在循环中执行测试:在循环中执行测试,适用于需要对数组中的每个元素进行相同验证的情况。
    pm.test("Loop through array elements for validation", function () {
        var jsonData = pm.response.json();
    
        // 假设 responseData 是一个数组
        jsonData.forEach(function (item) {
            pm.test("Check individual item", function () {
                pm.expect(item).to.have.property("property").that.is.a("string");
                // 添加更多的断言...
            });
        });
    });
  30. 验证响应体是否符合 OpenAPI 规范:如果你有 OpenAPI 规范,可以使用相应的库验证响应是否符合规范。
    pm.test("Validate response against OpenAPI specification", function () {
        var jsonData = pm.response.json();
        var openAPISpec = { /* Your OpenAPI specification here */ };
        var isValid = openAPISpecValidator.validate(jsonData, openAPISpec);
        pm.expect(isValid).to.be.true;
    });
  31. 验证特定条件下的重定向:在某些情况下验证 API 返回的重定向。
    pm.test("Check for redirect under specific conditions", function () {
        // 在特定条件下,期望 302 状态码和正确的 Location 头
        pm.expect(pm.response.code).to.equal(302);
        pm.expect(pm.response.headers.get("Location")).to.equal("https://redirectedlocation.com");
    });
  32. 使用环境变量动态构建请求:
    pm.test("Dynamically build request using environment variables", function () {
        var apiKey = pm.environment.get("api_key");
        var requestUrl = `https://api.example.com/data?apiKey=${apiKey}`;
    
        // 发送请求
        pm.sendRequest({
            url: requestUrl,
            method: 'GET',
            // 其他请求选项...
        }, function (err, response) {
            // 处理响应...
        });
    });
  33. 验证响应体是否符合 JSON Schema:使用 Postman 的内置 JSON Schema 验证功能,确保响应体符合预期的 JSON Schema。
    pm.test("Validate response against JSON Schema", function () {
        var jsonData = pm.response.json();
        var schema = {
            type: "object",
            properties: {
                key1: { type: "string" },
                key2: { type: "number" },
                key3: { type: "array" }
            },
            required: ["key1", "key2"]
        };
        pm.expect(jsonData).to.have.jsonSchema(schema);
    });
  34. 验证日期的格式和范围:
    pm.test("Validate date format and range", function () {
        var jsonData = pm.response.json();
        var dateFormat = /^\d{4}-\d{2}-\d{2}$/; // YYYY-MM-DD
        pm.expect(jsonData.date).to.match(dateFormat);
        pm.expect(new Date(jsonData.date)).to.be.within(new Date("2022-01-01"), new Date("2023-01-01"));
    });
  35. 验证 JSON 响应体中的嵌套属性:用于验证 JSON 响应体中的嵌套属性。
    pm.test("Check nested properties in JSON response", function () {
        var jsonData = pm.response.json();
    
        // 验证嵌套属性
        pm.expect(jsonData).to.have.nested.property("parentProperty.childProperty").that.is.a("string");
    });
  36. 使用 Newman 运行 Postman 集合并生成报告:在 Postman 的 "Tests" 中使用 Newman 运行集合,并将结果保存为报告。
    pm.test("Run collection using Newman", function () {
        pm.expect(pm.info.iteration).to.equal(1); // 只在第一次迭代运行
    
        // 构建 Newman 命令
        var newmanCommand = `newman run ${__ENV.PATH_TO_COLLECTION} --reporters cli,json --reporter-json-export ${__ENV.PATH_TO_REPORT}`;
    
        // 执行命令
        var commandOutput = exec(newmanCommand);
    
        // 打印 Newman 输出
        console.log(commandOutput);
    
        // 检查 Newman 是否成功运行
        pm.expect(commandOutput).to.include("run completed");
    });
  37. 验证响应头信息中是否包含特定的值:检查响应头信息中是否包含特定的值,例如压缩编码方式。
    pm.test("Check for a specific value in the response header", function () {
        pm.expect(pm.response.headers.get("Content-Encoding")).to.equal("gzip");
    });
  38. 使用环境变量设置请求头信息:在测试脚本中使用环境变量设置请求头信息,适用于需要动态设置请求头的情况。
    pm.test("Set request headers using environment variables", function () {
        var apiKey = pm.environment.get("api_key");
        pm.request.headers.upsert({ key: 'Authorization', value: `Bearer ${apiKey}` });
    });
  39. 验证响应体中的时间戳是否有效:
    pm.test("Check if timestamp in the response is valid", function () {
        var jsonData = pm.response.json();
        var timestamp = jsonData.timestamp;
    
        // 验证 timestamp 是否为有效的 Unix 时间戳
        pm.expect(timestamp).to.be.above(0);
    });
  40. 使用 pm.response.to.be.* 进行更多的断言:Postman 提供了一组 pm.response.to.be.* 的断言,用于更方便的验证响应。
    pm.test("Additional assertions using pm.response.to.be", function () {
        pm.response.to.be.ok; // 确保响应为真值
        pm.response.to.be.withBody; // 确保响应体存在
        pm.response.to.be.json; // 确保响应体为 JSON
        pm.response.to.be.header("Content-Type", "application/json"); // 确保 Content-Type 为 application/json
    });
  41. 验证响应体中的日期格式:使用正则表达式验证响应体中的日期格式。
    pm.test("Check if date in the response follows a specific format", function () {
        var jsonData = pm.response.json();
        var dateRegex = /^\d{4}-\d{2}-\d{2}$/; // 日期格式为 YYYY-MM-DD
        pm.expect(jsonData.date).to.match(dateRegex);
    });
  42. 验证数组中元素的唯一性:确保数组中的元素是唯一的。
    pm.test("Check if array elements are unique", function () {
        var jsonData = pm.response.json();
        var uniqueElements = new Set(jsonData.arrayProperty);
        pm.expect(uniqueElements.size).to.equal(jsonData.arrayProperty.length);
    });
  43. 验证响应体中某个属性的值在一定范围内:验证响应体中某个属性的值是否在指定范围内。
    pm.test("Check if property value is within a specific range", function () {
        var jsonData = pm.response.json();
        pm.expect(jsonData.propertyValue).to.be.within(1, 100);
    });
  44. 在预期的响应时间内重试请求:在测试脚本中使用 pm.sendRequest 来重试请求,直到满足预期的响应时间条件。
    // 在 "Tests" 脚本中使用 pm.sendRequest 重试请求,直到响应时间在指定范围内
    pm.test("Retry request until response time is within expected range", function () {
        var maxRetryCount = 5;
        var expectedResponseTime = 200; // 期望的响应时间
    
        pm.sendRequest(function () {
            return {
                url: pm.request.url,
                method: pm.request.method,
                header: pm.request.headers,
                body: pm.request.body
            };
        }, function (err, response) {
            pm.expect(response.responseTime).to.be.below(expectedResponseTime);
    
            if (response.responseTime > expectedResponseTime && pm.iteration < maxRetryCount) {
                // 重试请求
                return true;
            }
        });
    });
  45. 验证响应体中的属性值是否满足某个条件:
    pm.test("Check if property value meets a specific condition", function () {
        var jsonData = pm.response.json();
        pm.expect(jsonData.propertyValue).to.satisfy(function (value) {
            return value > 0 && value % 2 === 0; // 满足大于0且为偶数的条件
        });
    });
  46. 验证响应体中的属性是否存在:确保响应体中包含指定的属性。
    pm.test("Check if a property exists in the response", function () {
        var jsonData = pm.response.json();
        pm.expect(jsonData).to.have.property("propertyName");
    });
  47. 验证响应体中的属性是否为布尔值:确保响应体中的属性是布尔类型。
    pm.test("Check if a property is a boolean in the response", function () {
        var jsonData = pm.response.json();
        pm.expect(jsonData.booleanProperty).to.be.a("boolean");
    });
  48. 验证响应体中的属性是否为字符串并且不为空:确保响应体中的属性是非空字符串。
    pm.test("Check if a property is a non-empty string in the response", function () {
        var jsonData = pm.response.json();
        pm.expect(jsonData.stringProperty).to.be.a("string").and.to.not.be.empty;
    });
  49. 验证响应体中的属性是否为数组并且长度大于零:确保响应体中的属性是数组且长度大于零。
    pm.test("Check if a property is an array with length greater than zero", function () {
        var jsonData = pm.response.json();
        pm.expect(jsonData.arrayProperty).to.be.an("array").and.to.have.length.above(0);
    });
  50. 验证响应体中的属性是否为对象并且包含指定键:确保响应体中的属性是对象并且包含指定的键。
    pm.test("Check if a property is an object with a specific key", function () {
        var jsonData = pm.response.json();
        pm.expect(jsonData.objectProperty).to.be.an("object").and.to.have.property("specificKey");
    });
  51. 验证响应体中的属性是否为数字并且大于某个值:
    pm.test("Check if a property is a number greater than a specific value", function () {
        var jsonData = pm.response.json();
        pm.expect(jsonData.numberProperty).to.be.a("number").and.to.be.greaterThan(10);
    });
  52. 验证响应体中的属性是否满足自定义函数定义的条件:自定义函数用于验证响应体中的属性是否满足特定条件。
    // 自定义函数,用于验证属性是否为正偶数
    function isPositiveEvenNumber(value) {
        return typeof value === "number" && value > 0 && value % 2 === 0;
    }
    
    pm.test("Check if a property meets custom condition", function () {
        var jsonData = pm.response.json();
        pm.expect(jsonData.customProperty).to.satisfy(isPositiveEvenNumber);
    });
  53. 验证响应体中的属性是否为特定枚举值之一:确保响应体中的属性是特定枚举值之一。
    pm.test("Check if a property has one of the specified enum values", function () {
        var jsonData = pm.response.json();
        var enumValues = ["value1", "value2", "value3"];
        pm.expect(jsonData.enumProperty).to.be.oneOf(enumValues);
    });
  54. 验证响应体中的属性是否为特定字符串的前缀或后缀:确保响应体中的属性是特定字符串的前缀或后缀。
    pm.test("Check if a property has a specific prefix or suffix", function () {
        var jsonData = pm.response.json();
        var prefix = "prefix_";
        var suffix = "_suffix";
        pm.expect(jsonData.stringProperty).to.startWith(prefix).and.to.endWith(suffix);
    });
  55. 验证响应体中的属性是否为特定正则表达式的匹配:确保响应体中的属性匹配指定的正则表达式。
    pm.test("Check if a property matches a specific regex pattern", function () {
        var jsonData = pm.response.json();
        var regexPattern = /^[\d]{3}-[\d]{2}-[\d]{4}$/; // 日期格式为 XXX-XX-XXXX
        pm.expect(jsonData.dateProperty).to.match(regexPattern);
    });
  56. 验证响应体中的属性是否包含某个子字符串:
    pm.test("Check if a property contains a specific substring", function () {
        var jsonData = pm.response.json();
        var substring = "expectedSubstring";
        pm.expect(jsonData.stringProperty).to.include(substring);
    });
  57. 验证响应体中数组元素的属性是否满足条件:确保数组中的每个元素的属性满足特定条件。
    pm.test("Check if array elements meet specific conditions", function () {
        var jsonData = pm.response.json();
        pm.expect(jsonData.arrayProperty).to.satisfy(function (array) {
            return array.every(function (item) {
                return item.property > 0;
            });
        });
    });
  58. 验证响应体中属性的值是否与其他属性的值相关联:确保响应体中的属性值之间存在关联关系。
    pm.test("Check if properties are correlated in the response", function () {
        var jsonData = pm.response.json();
        pm.expect(jsonData.property1 + jsonData.property2).to.equal(jsonData.property3);
    });
  59. 在多次迭代中共享变量并进行验证:在多次迭代中共享变量,并在后续迭代中进行验证。
    pm.test("Share variables across iterations and perform validation", function () {
        var jsonData = pm.response.json();
    
        // 将值保存到环境变量中以便在后续迭代中使用
        pm.environment.set("sharedVariable", jsonData.property);
    
        // 在后续迭代中验证共享变量的值
        if (pm.info.iteration > 1) {
            pm.expect(pm.environment.get("sharedVariable")).to.equal("expectedValue");
        }
    });
  60. 在请求之间共享变量并进行验证:在请求之间共享变量,并在后续请求中进行验证。
    pm.test("Share variables across requests and perform validation", function () {
        var jsonData = pm.response.json();
    
        // 将值保存到环境变量中以便在后续请求中使用
        pm.environment.set("sharedVariable", jsonData.property);
    
        // 发送后续请求,使用共享变量
        pm.sendRequest({
            url: 'https://api.example.com/nextRequest',
            method: 'GET',
            header: {
                'Authorization': `Bearer ${pm.environment.get("sharedVariable")}`
            }
            // 其他请求选项...
        }, function (err, response) {
            // 处理响应...
        });
    });
  61. 使用 pm.expect 的自定义消息进行更清晰的断言:
    pm.test("Use custom message for clearer assertion", function () {
        var jsonData = pm.response.json();
        pm.expect(jsonData.property, "Property should be equal to expected value").to.equal("expectedValue");
    });
  62. 使用 pm.expect 的 to.be 链式语法进行更复杂的断言:
    pm.test("Complex assertions using chained syntax", function () {
        var jsonData = pm.response.json();
        
        pm.expect(jsonData)
            .to.have.property("property1")
            .that.is.an("array")
            .and.to.have.lengthOf.at.least(1)
            .and.to.include("expectedValue");
    });
  63. 在数组中查找满足条件的元素:
    pm.test("Find element in array that meets a condition", function () {
        var jsonData = pm.response.json();
        
        var matchingElement = jsonData.arrayProperty.find(function (item) {
            return item.property === "expectedValue";
        });
    
        pm.expect(matchingElement).to.exist;
    });
  64. 使用 pm.iterationData 进行数据驱动测试:使用 pm.iterationData 进行数据驱动测试,通过外部数据文件或数据集合进行迭代测试。
    pm.test("Data-driven testing using pm.iterationData", function () {
        var testData = pm.iterationData.get("testData");
        var jsonData = pm.response.json();
    
        pm.expect(jsonData.property).to.equal(testData.expectedValue);
    });
  65. 验证响应体中的属性是否为特定类型的对象:确保响应体中的属性是特定类型的对象,并包含指定的键。
    pm.test("Check if a property is of a specific object type", function () {
        var jsonData = pm.response.json();
        pm.expect(jsonData.objectProperty).to.be.an("object").that.has.all.keys("key1", "key2");
    });
  66. 验证响应体中的属性是否为特定类型的数组:
    pm.test("Check if a property is of a specific array type", function () {
        var jsonData = pm.response.json();
        pm.expect(jsonData.arrayProperty).to.be.an("array").that.includes("expectedValue");
    });
  67. 验证响应体中的属性是否为 null 或 undefined:确保响应体中的属性为 null 或 undefined。
    pm.test("Check if a property is null or undefined", function () {
        var jsonData = pm.response.json();
        pm.expect(jsonData.nullOrUndefinedProperty).to.be.oneOf([null, undefined]);
    });
  68. 在请求中使用动态生成的 UUID:在 "Pre-request Script" 中使用 uuid 库生成 UUID,并将其设置为环境变量,然后在请求中使用。
    // 在 "Pre-request Script" 中生成 UUID 并设置为环境变量
    var uuid = require('uuid');
    pm.environment.set('dynamicUUID', uuid.v4());
  69. 在测试脚本中使用动态生成的时间戳:在测试脚本中生成动态的时间戳进行验证
    pm.test("Use dynamic timestamp in the test script", function () {
        var dynamicTimestamp = Math.floor(Date.now() / 1000);
        pm.expect(dynamicTimestamp).to.be.above(0);
    });
  70. 验证响应体中的属性是否包含某个键,并且该键的值满足条件:
    pm.test("Check if property contains a key with a value meeting a condition", function () {
        var jsonData = pm.response.json();
        pm.expect(jsonData.propertyObject).to.have.property("dynamicKey").that.satisfies(function (value) {
            return value > 0;
        });
    });
  71. 验证响应体中的属性值是否是指定属性的子集:
    pm.test("Check if property values are subsets of another property", function () {
        var jsonData = pm.response.json();
        pm.expect(jsonData.propertySubset).to.have.all.keys("key1", "key2").and.to.include.all.values("value1", "value2");
    });
  72. 在测试脚本中使用环境变量进行条件性验证:在测试脚本中使用环境变量进行条件性验证,根据环境变量的值决定是否执行特定的断言。
    pm.test("Conditional validation using environment variable", function () {
        var jsonData = pm.response.json();
        var shouldValidate = pm.environment.get("shouldValidate");
    
        if (shouldValidate === "true") {
            pm.expect(jsonData.property).to.equal("expectedValue");
        } else {
            console.log("Validation skipped based on environment variable.");
        }
    });
  73. 验证响应体中的属性值是否近似等于某个数值:确保响应体中的属性值近似等于指定的数值,可以设置一个允许的误差范围。
    pm.test("Check if property value is approximately equal to a specific number", function () {
        var jsonData = pm.response.json();
        pm.expect(jsonData.propertyValue).to.be.closeTo(10.5, 0.1); // 允许的误差为0.1
    });
  74. 验证响应体中的属性值是否满足正则表达式的条件:使用正则表达式验证响应体中的属性值是否满足特定的条件。
    pm.test("Check if property value matches a regular expression", function () {
        var jsonData = pm.response.json();
        var regexPattern = /^[A-Za-z]+$/; // 只包含字母的字符串
        pm.expect(jsonData.propertyValue).to.match(regexPattern);
    });
  75. 验证响应体中的属性值是否在指定的数组范围内:
    pm.test("Check if property value is within a specified array range", function () {
        var jsonData = pm.response.json();
        var validValues = ["value1", "value2", "value3"];
        pm.expect(jsonData.propertyValue).to.be.oneOf(validValues);
    });
  76. 验证响应体中的属性值是否为真值(例如,非空字符串、非零数字等):
    pm.test("Check if property value is a truthy value", function () {
        var jsonData = pm.response.json();
        pm.expect(jsonData.propertyValue).to.be.truthy;
    });
  77. 在测试脚本中使用 pm.response.to.have.property 进行断言:
    pm.test("Assertion using pm.response.to.have.property", function () {
        pm.response.to.have.property("propertyName").that.is.a("string").and.to.equal("expectedValue");
    });
  78. 在测试脚本中使用 pm.expect 和自定义函数进行高级验证:例如验证属性是否为两个数字之和。
    // 自定义函数,用于验证属性是否为两个数字之和
    function isSumOfTwoNumbers(value, number1, number2) {
        return value === number1 + number2;
    }
    
    pm.test("Advanced validation using custom function", function () {
        var jsonData = pm.response.json();
        pm.expect(jsonData.propertyValue).to.satisfy(isSumOfTwoNumbers, 5, 7);
    });
  79. 在测试脚本中使用 pm.iteration 和环境变量进行动态验证:根据迭代次数动态获取期望值
    pm.test("Dynamic validation using pm.iteration and environment variable", function () {
        var jsonData = pm.response.json();
        var expectedValue = pm.environment.get("expectedValue_" + pm.iteration);
    
        pm.expect(jsonData.propertyValue).to.equal(expectedValue);
    });
  80. 在测试脚本中使用pm.expect 和 lodash 库进行深度比较:
    // 在 "Pre-request Script" 中安装 lodash 库
    // npm install lodash
    
    var _ = require('lodash');
    
    pm.test("Deep comparison using pm.expect and lodash", function () {
        var expectedData = {
            key1: "value1",
            key2: {
                key3: "value3"
            }
        };
    
        var jsonData = pm.response.json();
        pm.expect(jsonData).to.deep.equal(expectedData);
    });
  81. 在测试脚本中使用 pm.expect 进行 JSON Schema 验证:
    // 在 "Pre-request Script" 中安装 Ajv 库
    // npm install ajv
    
    var Ajv = require('ajv');
    var ajv = new Ajv();
    
    pm.test("JSON Schema validation using pm.expect", function () {
        var jsonData = pm.response.json();
        var schema = {
            type: 'object',
            properties: {
                property1: { type: 'string' },
                property2: { type: 'number' }
            },
            required: ['property1', 'property2'],
            additionalProperties: false
        };
    
        var validate = ajv.compile(schema);
        var isValid = validate(jsonData);
    
        pm.expect(isValid, "Response doesn't match the expected JSON Schema").to.be.true;
    });
  82. 在测试脚本中使用 pm.expect 进行 XML 验证:
    // 在 "Pre-request Script" 中安装 xml2js 库
    // npm install xml2js
    
    var parseString = require('xml2js').parseString;
    
    pm.test("XML validation using pm.expect", function () {
        var xmlData = pm.response.text();
        var expectedXml = '<root><element>value</element></root>';
    
        parseString(xmlData, function (err, result) {
            var expectedResult;
            parseString(expectedXml, function (err, result) {
                expectedResult = result;
            });
    
            pm.expect(result).to.deep.equal(expectedResult);
        });
    });
  83. 在测试脚本中使用 pm.test 进行响应时间的验证:确保响应时间在指定的范围内。
    pm.test("Check if response time is within expected range", function () {
        pm.expect(pm.response.responseTime).to.be.below(1000); // 期望响应时间在1秒以内
    });
  84. 在测试脚本中使用 pm.environment 进行环境变量的动态验证:
    pm.test("Dynamic validation using environment variable", function () {
        var jsonData = pm.response.json();
        var expectedValue = pm.environment.get("expectedValue");
    
        pm.expect(jsonData.property).to.equal(expectedValue);
    });
  85. 在测试脚本中使用 pm.expect 进行 OAuth 2.0 验证:确保响应包含必要的 OAuth 2.0 令牌信息。
    pm.test("OAuth 2.0 validation using pm.expect", function () {
        var jsonData = pm.response.json();
        pm.expect(jsonData.access_token).to.exist;
        pm.expect(jsonData.token_type).to.equal("Bearer");
        pm.expect(jsonData.expires_in).to.be.above(0);
    });
  86. 在测试脚本中使用 pm.expect 验证跨站请求伪造(CSRF)保护:确保实施了跨站请求伪造保护。
    pm.test("CSRF protection validation using pm.expect", function () {
        var jsonData = pm.response.json();
        pm.expect(jsonData.csrfToken).to.exist;
    });
  87. 在测试脚本中使用 pm.expect 进行 HTTP 响应码验证:确保响应码是 200。
    pm.test("Check if HTTP response code is 200 OK", function () {
        pm.response.to.have.status(200);
    });
  88. 在测试脚本中使用 pm.expect 验证响应体长度:
    pm.test("Check if response body length is within expected range", function () {
        pm.expect(pm.response.text().length).to.be.within(10, 1000);
    });
  89. 在测试脚本中使用 pm.expect 进行 HTML 响应内容验证:确保响应中包含预期的 HTML 元素。
    pm.test("Check if HTML response contains expected element", function () {
        var htmlResponse = pm.response.text();
        pm.expect(htmlResponse).to.include('<title>Expected Title</title>');
    });
  90. 在测试脚本中使用 pm.expect 验证重定向:检查重定向的目标地址。
    pm.test("Check if response is a redirect", function () {
        pm.expect(pm.response.to.have.status(302));
        pm.expect(pm.response.to.have.header("Location", "https://new-location.com"));
    });
  91. 在测试脚本中使用 pm.expect 验证响应体的 JSONPath 表达式:
    pm.test("Check if response JSON contains expected value using JSONPath", function () {
        var jsonData = pm.response.json();
        pm.expect(jsonData).to.have.jsonPath("$.data[0].name", "Expected Name");
    });
  92. 在测试脚本中使用 pm.expect 进行 HMAC 签名验证:
    // 在 "Pre-request Script" 中安装 crypto-js 库
    // npm install crypto-js
    
    var CryptoJS = require("crypto-js");
    
    pm.test("HMAC signature validation using pm.expect", function () {
        var jsonData = pm.response.json();
        var secretKey = "yourSecretKey";
        var expectedSignature = CryptoJS.HmacSHA256(JSON.stringify(jsonData), secretKey).toString();
    
        pm.expect(jsonData.signature).to.equal(expectedSignature);
    });
  93. 在测试脚本中使用 pm.expect 验证响应体中的属性是否是特定日期格式:
    pm.test("Check if date property follows a specific format", function () {
        var jsonData = pm.response.json();
        var dateRegex = /^\d{4}-\d{2}-\d{2}$/; // 日期格式为 YYYY-MM-DD
        pm.expect(jsonData.dateProperty).to.match(dateRegex);
    });
  94. 在测试脚本中使用 pm.expect 进行 GraphQL 响应验证:
    pm.test("GraphQL response validation using pm.expect", function () {
        var jsonData = pm.response.json();
    
        pm.expect(jsonData).to.have.property("data");
        pm.expect(jsonData.data).to.have.property("user");
        pm.expect(jsonData.data.user).to.have.property("name").that.is.a("string").and.to.equal("ExpectedName");
    });
  95. 在测试脚本中使用 pm.expect 验证响应体中的属性是否包含特定元素:
    pm.test("Check if property contains specific elements", function () {
        var jsonData = pm.response.json();
        pm.expect(jsonData.arrayProperty).to.include.members(["value1", "value2"]);
    });
  96. 在测试脚本中使用 pm.expect 验证响应头中是否包含特定键值对:
    pm.test("Check if response headers contain specific key-value pairs", function () {
        pm.expect(pm.response.headers.get("Content-Type")).to.equal("application/json");
        pm.expect(pm.response.headers.get("Cache-Control")).to.include("max-age=3600");
    });
  97. 在测试脚本中使用 pm.expect 验证响应体中的属性值是否为布尔类型:
    pm.test("Check if property value is a boolean", function () {
        var jsonData = pm.response.json();
        pm.expect(jsonData.booleanProperty).to.be.a("boolean");
    });
  98. 在测试脚本中使用 pm.expect 验证响应体中的属性值是否在指定的数字范围内:
    pm.test("Check if property value is within a specified number range", function () {
        var jsonData = pm.response.json();
        pm.expect(jsonData.numberProperty).to.be.within(1, 100);
    });

    关于postman的tests脚本,我整理的暂时就只有这么多,后续学到了新的test脚本的话我也会进行更新,如果大家有关于postman tests的其他脚本,欢迎大家补充分享。文章来源地址https://www.toymoban.com/news/detail-816799.html

到了这里,关于关于PostMan中Tests脚本的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Postman】利用Tests和Environment实现登录自动保存Token

    在使用 Postman 做接口测试的时候发现每次请求功能时都要在 Header 中手动修改 Token ,当接口变多时会产生效率问题,故考虑使用 环境变量(Environment) 来保存。 环境变量分为以下三种: 全局变量 :全局有效,在 Postman 中的任何集合中都可以使用该变量,作用域最大。 环境变量

    2024年04月14日
    浏览(37)
  • Postman进阶篇(十二)-在脚本中使用pm对象访问接口响应数据(pm.response.*)

    在之前的文章中介绍过postman中的两个脚本——pre-request script或test script,在这两个脚本中都有使用到pm对象。(pre-request script详细介绍、Test script详细介绍) pm对象是在postman的脚本中非常重要,也是十分常用的方法。 本篇主要介绍pm对象的使用方法操作接口返回结果。 pm对象

    2023年04月08日
    浏览(82)
  • 在Postman的脚本中使用pm对象获取接口的请求参数

    query params页面 在tests中写脚本做后置处理:(此处以设置不同类型用户的全局变量为例) 执行后的响应信息: 执行后可在 console 中可见获取到的print type: 执行后可在 environment quick look 中可见变量信息: 使用双花括号进行引用: {{deliverToken}} 执行后的效果: 其中tests中的关

    2024年02月09日
    浏览(51)
  • Postman学习记录(1)Tests获取返回header中的参数,并自动配置到环境变量中

    //获取header中的参数并赋值给session var session=postman.getResponseHeader(\\\"Session-Token\\\") //获取header中remember的参数并赋值给session var remember=postman.getResponseHeader(\\\"Remember-Me-Token\\\") //session配置到环境变量中 postman.setEnvironmentVariable(\\\"Session-Token\\\",session); //remember配置到环境变量中 postman.setEnvironm

    2024年02月14日
    浏览(49)
  • 【Cmake】Ctest测试工具 cmake命令之add_test和set_tests_properties使用案例

    目录 前言 一、初识CTest 二、使用方法 三、完整的简单测试工程 附录 附录一 cmake命令 enable_testing add_test 原文:CTest - https://www.cnblogs.com/457220157-FTD/p/4139149.html        CTest是CMake集成的一个测试工具,在使用CMakeLists.txt文件编译工程的时候,CTest会自动configure、build、test和展现

    2023年04月17日
    浏览(34)
  • Bot Style Tests

    Bot Style Tests · SeleniumHQ/selenium Wiki · GitHub 尽管 Page Objects 在你的测试中减少重复的方式是非常有用的,这并不总是一个团队愿意遵循的模式,另一种方法是遵循更 command-like 的测试风格。 一个 bot 是基于Selenium APIs 面向操作的抽象。这意味着如果你发现命令对你的应用程序没有

    2024年02月09日
    浏览(29)
  • D. Problem with Random Tests

    Problem - 1743D - Codeforces   思路:因为是或,所以答案一定会比原串更大,并且为了保留更多的1,我们可以选择原串作为其中一个串,另一个串则要找到第一个为0的位置,我们希望让这个为1,为了让这个位置在或之后为1,需要满足两个条件,假设这个位置为id,那么首先要满

    2024年02月12日
    浏览(41)
  • Junit测试运行出现No tests were found

    执行contextLoads()方法的时候是没问题的。 当想单独执行add()方法时就出现了No tests were found这个错误。 然后我试着将add()方法返回值改成void,执行成功。 又试了一下将方法定义为private,同样报错。 @Test注解的单元测试方法 不能有返回值 ,要用 void 。 方法定义为 private 的也不

    2024年02月11日
    浏览(40)
  • Junit运行错误:报错no tests were found

    在正常书写测试类时,尝试运行发现报错:no tests were found 上网搜索出现该情况的可能性主要为 1.@Test注解的单元测试方法不能有返回值 2.进行单元测试的方法不能私有化 修改单元测试方法后问题仍未得到解决 后来发现可能是junit依赖有问题,更换junit依赖版本为4.12(原本使

    2024年02月03日
    浏览(53)
  • Maven编译、安装或打包时跳过单元测试Skip Tests

    场景: 在使用 Maven 对项目或模块进行编译(compile)、安装(install)、打包(package)等操作,单元测试没必要编译,设置跳过单元测试可以增加编译速度、也可以防止出现一些奇怪的异常现象 一、设置跳过单元测试 1、Idea可视化跳过 2、使用命令参数跳过 mvn package -Dmaven.test.skip=tr

    2024年02月16日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包