目錄
一、環境與變量的深度應用
多環境動態切換
動態變量與腳本生成
二、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}`,?() =>?{
? ??// 動態構建請求并發送(需異步處理)
? });
});
測試價值:靈活構造復雜測試場景,減少外部依賴。