目录
环境与变量的高级管理技巧,这是实现参数化和多环境测试的基础。动态变量和脚本联动特别重要,比如用时间戳防重复这种实战技巧必须包含。用脚本解决依赖问题(比如自动提取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}`, () => {// 动态构建请求并发送(需异步处理)});});
测试价值:灵活构造复杂测试场景,减少外部依赖。
2001

被折叠的 条评论
为什么被折叠?



