一、什麼是斷言?
在測試中,斷言是測試正確行為的方法。它是由測試工具或測試庫提供的語句或代碼段。它通常是在代碼的某個位置插入的,以檢驗程序的某個方面是否「符合預期」。 在 API 測試中,可以使用 Postman 利用斷言驗證 API 的正確性、性能和安全性。
二、響應斷言
在 API 測試中,響應斷言是最常用且最基本的斷言之一。我們對於每個請求發出的響應來做出斷言,並確保響應的狀態碼、消息正文等等都符合預期。
1、驗證狀態碼
pm.test("Response code is 200", function () {
pm.response.to.have.status(200);
});
這段代碼將檢查 API 的響應狀態碼是否都是200。如果檢查失敗,將顯示一條失敗消息。
2、驗證響應時間
const MAX_RESPONSE_TIME = 2000; // in ms
pm.test("Response time is less than " + MAX_RESPONSE_TIME + "ms", function () {
pm.expect(pm.response.responseTime).to.be.below(MAX_RESPONSE_TIME);
});
這段代碼將檢查 API 的響應時間是否小於設定的最大響應時間(2秒)。如果檢查失敗,將顯示一條失敗消息。
3、驗證響應消息正文
pm.test("Response body matches expected value", function () {
pm.expect(pm.response.text()).to.include("expected value");
});
這段代碼將檢查 API 的響應消息正文是否包含「expected value」這個內容。如果檢查失敗,將顯示一條失敗消息。
4、驗證響應格式
pm.test("Response should be in JSON format", function () {
pm.response.to.be.json; // this will make sure that response is in JSON format
});
這段代碼將檢查 API 的響應是否是 JSON 格式。如果檢查失敗,將顯示一條失敗消息。
三、環境變量斷言
除了響應斷言,Postman 還支持環境變量的斷言。環境變量是存儲在 Postman 中的可被腳本使用的全局變量。環境變量可用於存儲和傳遞 API 測試中的數據。
1、驗證環境變量存在
pm.test("Environment variable exists", function() {
pm.expect(pm.environment.has("variable_key")).to.be.true;
});
這段代碼將檢查名為「variable_key」的環境變量是否存在。如果檢查失敗,將顯示一條失敗消息。
2、驗證環境變量的值
pm.test("Environment variable value is expected", function() {
pm.expect(pm.environment.get("variable_key")).to.eql("expected_value");
});
這段代碼將檢查名為「variable_key」的環境變量的值是否等於「expected_value」。如果檢查失敗,將顯示一條失敗消息。
3、驗證環境變量是數字
pm.test("Environment variable is a number", function () {
var value = pm.environment.get("variable_key");
pm.expect(Number(value)).to.be.a("number");
});
這段代碼將檢查名為「variable_key」的環境變量的值是否為數字類型。如果檢查失敗,將顯示一條失敗消息。
四、集成測試斷言
在集成測試中,可以使用斷言來檢查 API 與其他應用程序集成時的正常工作。
1、驗證 API 認證
pm.test("API requires authentication", function () {
pm.expect(pm.response.headers.get("Authorization")).to.not.be.null;
});
這段代碼將驗證 API 是否需要進行身份驗證。 如果檢查失敗,將顯示一條失敗消息。
2、驗證 API 是否調用其他服務
pm.test("API calls another service", function () {
pm.expect(pm.response.headers.get("Service-Name")).to.eqls("Service-Name");
});
這段代碼將驗證 API 是否調用名為「Service-Name」的另一個服務。如果檢查失敗,將顯示一條失敗消息。
3、驗證 API 與數據庫的交互
pm.test("API interacts with database", function () {
pm.expect(pm.response.text()).to.include("SELECT * FROM TABLE");
});
這段代碼將驗證 API 是否與名為「TABLE」的數據庫進行交互。如果檢查失敗,將顯示一條失敗消息。
五、規範斷言
規範斷言用於驗證 API 是否遵循行業標準、規範和最佳實踐。它在 API 測試中很重要,因為它確認了 API 的質量和可靠性。
1、驗證 HTTP 方法
pm.test("API uses correct HTTP method", function () {
pm.expect(pm.request.method).to.eql("GET");
});
這段代碼將驗證 API 使用的 HTTP 方法是否正確。如果檢查失敗,將顯示一條失敗消息。
2、驗證 API 路徑
pm.test("API path is valid", function () {
pm.expect(pm.request.url.pathname).to.eql("/api/path");
});
這段代碼將驗證 API 的路徑是否正確。如果檢查失敗,將顯示一條失敗消息。
3、驗證 API 參數
pm.test("API parameters are correct", function () {
pm.expect(pm.request.url.query).to.eql({"param_key":"param_value"});
});
這段代碼將驗證 API 的參數是否正確。如果檢查失敗,將顯示一條失敗消息。
原創文章,作者:PDNL,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/149218.html