postman的GUI界面以及各個組件介紹
主界面如下
打開postman的GUI界面以及各個元素組件介紹
分為下三部分:
1、Head navigation bar (頭部導航欄):此部分有以下選項內容需要了解:
(1)New(新建按鈕):可以用來新建集合、請求、mock服務、監聽器、測試環境等(重要);
(2)import(導入按鈕):可以用來導入文件 信息、集合、文件夾、以及鏈接(tab);
(3)Runner(運行按鈕):用於運行集合(重要);
(4)新窗口增加按鈕:可以用來增加新的postman窗口、運行窗口、以及請求頁簽(tab);
(5):構建器和團隊選項,可以用於團隊庫和當前視圖的轉換;
(6)抓取api請求圖標:可以通過次按鈕抓取api(不常用)
(7) 同步狀態圖標:同步apid 請求已達到共享;
(8)設置圖標:管理postman的應用程序,設置postman主界面;
2、Side navigation bar :次部分包含內容如下:
(1)History:用postman發起過的任何請求,都會保存在歷史選項卡里;;
(2)Collections:集合選項卡,可以是每個請求的集合、也可以是URL的集合;
3、work space:工作空間是postman使用的重點,對其務必熟悉;postman通過選項卡的形式在構建器中發送和管理的請求信息;
上部分是請求構建器,下部分是相應構建器;具體說明如下:
面對post請求如何使用postman進行測試:
用postman進行get請求:
如何在postman中進行參數化
postman支持子啊接口請求中,對某個請求字段,或者url進行參數化。對url進行參數化只需要將其配置成環境變量,然后在url中對其進行引用即可。
對url進行參數化
對接口中的某個請求字段進行參數化
實例接口:
通過postman請求和響應如下:
此時我們想更換100個人,迭代請求apply接口,此時就需要name、certicode、age這三個key值進行參數化。postman本身支持三種參數化的方式。通過.text文檔、通過.csv文件以及json文件。對於我而言,推薦大家采用第一種方式即.text方式進行參數化。因為操作簡單,json文件的組織比較繁瑣,不太適用於多個參數需要參數化的場景,而.csv文件對格式要求過高,會浪費精力。具體實現步驟如下:
1、組織需要的參數化的參數文件,文件內容展示如下:
參數之間需要用英文字符下單逗號間隔,編碼需要utf-8,保存的文件后綴為.text即可;
2、在Apply接口的Pre-request Script出寫入如下腳本,讀取text參數化文件。
var apply="apply.text"; //聲明參數化文件
var name=apply.name; //讀取第一個參數name
pm.environment.set("name","name"); //將name的值依次賦給請求中的name
var age=apply.age;
pm.environment.set("age","age");
var certicode=apply.certicode;
pm.environment.set("certicode","certicode");
3、將原請求中的具體值分別進行參數替換:替換后的請求為:
{
“interfaceType”:"apply",
"name":{{name}}",
"age":"{{age}}",
"certicode":"{{certicode}}"
}
4、打開runner,設置迭代次數且導入參數化文件;
5、點擊“Run 360足球聯賽”可以看到總計數迭代的次數為我設置的10,當然如果各個次數個數為100,就設置為100即可;運行完成后,效果圖如下:
6、打開控制台,可以檢查下每次請求是否按照參數進行取值;
上圖知識截了第一次迭代、第二次迭代的請求,可見取的是參數化文件對應的第二行、第三行的值,不從第1行讀取,是因為第一行是參數化列表;
使用runner對定時任務、請求進行迭代配置
配置定時任務的思路其實就是參數化介紹的runner界面控制,選擇迭代次數以及每個定時任務之間的間隔時間即可;
用js腳本設置檢查點(斷言)
以上聲明postman支持參數迭代,那么在結合上其身的js腳本,我們還可以用postman做接口的自動化驗證,當然其有不足之處,體現在不能實現錯誤重試、生成測試報告以及錯誤信息的實時采集。但是滿足日常的流程驗證(現在也叫契約測試)是綽綽有余的。
在runner下運行准備好的apply 、sign、login三個接口,點擊:Run Summary
運行結束后,不難看出,三個接口只是運行了,或者說滿足了被調用的條件,但無法通過這個運行判斷出接口到底是不是按照要求來做的、也就是響應時間、響應碼、響應參數等是否滿足約束。為了解決這個問題,我們為其添加斷言(或者叫檢查點);拿apply接口為例,學習檢查點相關內容:
以下介紹常用的腳本:
1、設置環境變量
pm.environment.set("variable_key","variable_value");
2、檢查http請求的狀態碼是否於預期一致
pm.test("Status code is 200",function() {
pm.response.to.have.status(200);
});
3、檢查JSON響應中包含某個字段
pm.test("Your test name",function () {
var jsonData=pm.response.json();
pm.expect(jsonData.value).to.eql("字段名稱");
});
4、檢查響應體中可以解析某個指定字段的值
pm.test("Body matches string",function () {
pm.expect(pm.response.text ()).to.include("string_you_want_to_search");
});
5、檢查響應時間的長短
pm.test("Response time is less than 200ms",function () {
pm.expect(pm.response.responseTime).to.be.below(200);
});
下面在apply接口中加入上面的檢查點:
此時,可以發現運行結果飽滿了很多,不單單是接口的執行,還有相應的檢查點判斷,如上為apply接口設置的檢查點定時pass的,這樣的話,后續接口發生變更,想要驗證接口是否滿足約束,直接運行次檢查點案例即可;