目录
[二、Pre-request Script 的妙用](#二、Pre-request Script 的妙用)
[三、Test Script 的进阶断言](#三、Test Script 的进阶断言)
[复杂 JSON Schema 校验](#复杂 JSON Schema 校验)
[CSV/JSON 文件驱动](#CSV/JSON 文件驱动)
环境与变量的高级管理技巧,这是实现参数化和多环境测试的基础。动态变量和脚本联动特别重要,比如用时间戳防重复这种实战技巧必须包含。用脚本解决依赖问题(比如自动提取token)、数据驱动测试的完整方案、以及如何用脚本增强断言。工作流设计对自动化测试至关重要,需要说明如何串联接口并处理数据传递。
一、环境与变量的深度应用
多环境动态切换
场景:测试开发、测试、预生产、生产环境。
高级用法:定义不同环境的 base_url、认证信息、全局参数。通过环境选择器一键切换。
测试价值:避免手动修改 URL/参数,保证环境隔离,减少配置错误。
动态变量与脚本生成
场景:需要唯一订单号、动态时间戳、随机手机号等。
高级用法:
内置动态变量:{{guid}}, {{timestamp}}, {{$randomInt}}
Pre-request Script 中自定义:
//javascript// 生成随机手机号并存入变量const randomPhone = '13' + Math.floor(Math.random() * 1000000000).toString().padStart(9, '0');pm.variables.set("random_phone", randomPhone);
测试价值:自动化生成测试数据,避免重复和冲突,适合压力测试和并发场景。
二、Pre-request Script 的妙用
参数签名/加密
场景:接口需要 HMAC、RSA 等签名验证。
示例:
//javascriptconst crypto = require('crypto-js');const secret = pm.variables.get("api_secret");const params = {...request.data, timestamp: Date.now()};const sign = crypto.HmacSHA256(JSON.stringify(params), secret).toString();pm.variables.set("signature", sign);
测试价值:自动化处理复杂鉴权逻辑,保证安全测试的覆盖。
接口依赖处理
场景:下单接口依赖登录接口返回的 token。
高级用法:在 Pre-request Script 中调用登录接口并提取 token:
//javascriptpm.sendRequest({ url: pm.variables.get("auth_url"), method: 'POST', body: {user: 'test', pwd: '123456'}}, (err, res) => { const token = res.json().access_token; pm.variables.set("access_token", token); // 供后续接口使用});
测试价值:解决接口依赖链,实现端到端自动化测试。
三、Test Script 的进阶断言
复杂 JSON Schema 校验
场景:验证复杂 JSON 结构是否符合规范。
示例:
//javascriptconst schema = { type: "object", properties: { status: {type: "integer"}, data: { type: "array", items: { type: "object", properties: { id: {type: "number"}, name: {type: "string"} } } } }};pm.test('Schema is valid', () => { pm.expect(tv4.validate(pm.response.json(), schema)).to.be.true;});
测试价值:超越简单字段检查,确保数据结构完整性。
数据库断言
场景:验证接口操作是否正确写入数据库(如订单状态更新)。
高级用法:集成 pg、mysql 等 npm 库:
//javascriptconst mysql = require('mysql');const conn = mysql.createConnection({...});conn.query('SELECT status FROM orders WHERE id=123', (err, results) => { pm.expect(results[0].status).to.eql('paid'); });
测试价值:打通接口与数据层验证,保障业务一致性。
四、数据驱动测试
CSV/JSON 文件驱动
场景:批量测试不同参数组合(如登录、支付金额)。
步骤:
创建 data.csv:
csv
username,password,expected_status
user1,pass1,200
user2,wrong_pass,401
Collection Runner 中关联文件,通过 data.username 引用列。
测试价值:高效覆盖等价类、边界值,实现参数化测试。
动态生成测试用例
Pre-request Script 中根据逻辑生成多组数据:
//javascriptconst testCases = [ {q: "apple", maxPrice: 100}, {q: "", maxPrice: -1} // 异常测试];pm.variables.set("testCases", JSON.stringify(testCases));在 Tests 中循环执行:javascriptconst cases = JSON.parse(pm.variables.get("testCases"));cases.forEach((case) => { pm.test(`Search: ${case.q}`, () => { // 动态构建请求并发送(需异步处理) });});
测试价值:灵活构造复杂测试场景,减少外部依赖。