尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Postman接口测试(断言、关联、参数化、输出测试报告)

Postman接口测试(断言、关联、参数化、输出测试报告) 基本界面展示Get、Post请求Postman断言使用postman来判断预期结果与实际结果是否一致响应状态码断言响应包含字符串断言判断字符串的格式关联用于解决http请求之间存在依赖关系依赖一个http请求的响应结果中的数据被另一个请求使用登录 http请求返回的令牌。被添加员工请求依赖请求头中使用可以使用 postman的关联技术来使用。适用情况:http请求之间存在依赖关系全局变量环境变量先创环境参数化参数化将 http请求需要的数据和断言数据组织到一个文件中。从postman导入文件实现 http请求发送、断言。应用场景针对同一个接口组织 N 条 不同的测试用例。数据格式完全一致的。适用参数化。文件格式1.CSVjson:生成测试报告生成测试报告步骤批量执行用例集导出用例集合终端下使用命令newman run 用例集文件.json -e 环境文件.json -d 数据文件.csv/.json -r htmlextra --reporter-htmlextra-export 测试报告名.html总结常用的写法语句// // 1. 解析响应数据 // const jsonData pm.response.json(); // // 2. 基础 HTTP 响应断言 // // 2.1 验证 HTTP 状态码是否为 200 pm.test(Status code is 200, function () { pm.response.to.have.status(200); }); // 2.2 验证响应时间是否小于 500ms (性能监控) pm.test(Response time is less than 500ms, function () { pm.expect(pm.response.responseTime).to.be.below(500); }); // 2.3 验证响应头是否包含 Content-Type pm.test(Content-Type is present, function () { pm.response.to.have.header(Content-Type); }); // 2.4 验证响应头 Content-Type 是否包含 application/json pm.test(Content-Type is application/json, function () { pm.expect(pm.response.headers.get(Content-Type)).to.include(application/json); }); // // 3. JSON 结构与字段存在性断言 // // 3.1 验证响应体是否包含特定的字符串 (模糊匹配) pm.test(Body contains success, function () { pm.expect(pm.response.text()).to.include(success); }); // 3.2 验证 JSON 对象是否包含 code 属性 pm.test(Response has code property, function () { pm.expect(jsonData).to.have.property(code); }); // 3.3 验证嵌套对象是否包含 access_token 属性 (使用可选链防报错) pm.test(Response has access_token property, function () { pm.expect(jsonData).to.have.property(access_token); }); // // 4. 业务逻辑与数据类型深度断言 // // 4.1 验证业务码是否严格等于 0 (或 200) pm.test(Business code is 0, function () { pm.expect(jsonData.code).to.eql(0); }); // 4.2 验证 code 字段的数据类型必须是数字 pm.test(code is a number, function () { pm.expect(jsonData.code).to.be.a(number); }); // 4.3 验证 message 字段的数据类型必须是字符串 pm.test(message is a string, function () { pm.expect(jsonData.message).to.be.a(string); }); // 4.4 验证 message 字符串是否包含 成功 pm.test(Message contains 成功, function () { pm.expect(jsonData.message).to.include(成功); }); // // 5. 数组与列表专属断言 (如果 data 是数组) // // 5.1 验证 data 字段必须是数组类型 pm.test(data is an array, function () { pm.expect(jsonData.data).to.be.an(array); }); // 5.2 验证 data 数组不能为空 (至少有一条数据) pm.test(data array is not empty, function () { pm.expect(jsonData.data).to.be.an(array).that.is.not.empty; }); // 5.3 验证 data 数组的长度正好等于 3 pm.test(data array length is 3, function () { pm.expect(jsonData.data).to.have.lengthOf(3); }); // // 6. 安全提取变量 (结合断言结果) // if (jsonData.code 200 jsonData.access_token) { pm.environment.set(token, jsonData.access_token); pm.globals.set(token, jsonData.access_token); } else { console.warn(⚠️ 警告业务码不为200或未获取到 token跳过变量提取); }
返回列表