目录
一、环境与变量的深度应用
多环境动态切换
动态变量与脚本生成
二、Pre-request Script 的妙用
参数签名/加密
接口依赖处理
三、Test Script 的进阶断言
复杂 JSON Schema 校验
数据库断言
四、数据驱动测试
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 等签名验证。
示例:
//javascript
const 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:
//javascript
pm.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 结构是否符合规范。
示例:
//javascript
const 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 库:
//javascript
const 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 中根据逻辑生成多组数据:
//javascript
const testCases = [
{q: "apple", maxPrice: 100},
{q: "", maxPrice: -1} // 异常测试
];
pm.variables.set("testCases", JSON.stringify(testCases));
在 Tests 中循环执行:
javascript
const cases = JSON.parse(pm.variables.get("testCases"));
cases.forEach((case) => {
pm.test(`Search: ${case.q}`, () => {
// 动态构建请求并发送(需异步处理)
});
});
测试价值:灵活构造复杂测试场景,减少外部依赖。