Postman是訪問各類API的客戶端。它的強大之處在於其容許在對某一個request訪問的以前和以後分別運行自定義的一段Javascript腳本,這樣直接就完成了一個
chain request
的效果,能夠將數條request連結成一個流程完成一體化測試。這在不少的API操做中都是極其有用的,因此這裏有必要總結一些經常使用語句。
pre-request
腳本,是在對API進行請求以前的腳本,通常用於動態生成參數、JSON數據包、連接地址等。test
腳本,其實更應該叫post-request
,實在完成API訪問並獲得其response迴應以後運行的腳本,通常用於獲取response的內容,用於以後對於別的資源的請求,如獲取頁面標題和內容等。須要注意,pre-request
腳本,在裏面直接寫代碼就能夠了,可是test
腳本須要在某個指定的函數pm.test(...)
中執行纔會被識別,且做爲test
腳本運行。以下圖:pm.test()
中第一個參數是測試描述(會在測試結果欄顯示,應和其它測試描述作以區分),第二個參數是一個函數,具體執行代碼都在這個函數中運行。
另外,pm
對象是Postman的主要對象,全部的內置函數,數據調用等,都須要經過它來實現。javascript
若是要看已經設置的Enviroment變量的話,能夠點開右上方小眼睛看到,以下圖,我設置了3個環境變量:java
調試時要打印的話,通常都是用console.log(...)
,這樣就能在console中看到。
若是你的Postman是Chrome app的話,直接在chrome瀏覽器的開發者工具裏調試就行。若是是Mac等桌面軟件,則須要打開內置的console才能看到調試信息。位置在左下角,以下圖:chrome
通常會在腳本編寫欄的右邊都會有經常使用語句片斷,點擊如下就會出來代碼,可是一開始不太瞭解的話點出來其實也看不懂。以下圖:瀏覽器
官方文檔解釋的各類函數調用連接在這裏:Postman Sandboxapp
如下是我本身總結的經常使用代碼片斷:less
// 獲取response返回內容 var rsb = responseBody; // 是字符串格式 // 獲取環境變量 var v = pm.environment.get("變量名稱"); // 設置環境變量 只能存儲字符串,若是是對象的話則沒法在下次運行時獲取到內容 // 如須要存儲JSON數據,能夠用JSON.stringify(..)存儲,再用JSON.parse(..)轉化爲對象使用 pm.environment.set("變量名稱", 變量內容); // 清除某個環境變量 pm.environment.unset("環境變量名"); // 獲取全局變量和普通變量 var gb = pm.globals.get("全局變量名"); var nm = pm.variables.get("普通變量名"); // Javascript 獲取變量類型 console.log( typeof pm.enviroment );
除了上面的具體功能代碼外,常常還須要返回一個結果,告訴Postman這個測試結果是Pass仍是Fail,默認是pass。函數
這裏返回值就不是簡單的return語句能夠,必需要經過Postman自帶的對象或方法才能夠,通常是經過pm.expect()
或tests[]
這兩個地方返回測試結果。工具
這些方法名看起來都很容易理解,通常都會叫pm.expect()
或.to.be()
或.to.have()
這樣的,字面意思就是期待什麼或要求它必須是什麼或必須有什麼,才能經過測試。
另外,一樣的測試結果,實際上還有更簡單的寫法,即不經過pm
對象,而是內置tests
對象,經常使用操做以下:post
# 反應時間必須少於200毫秒 tests["Response time is less than 200ms"] = responseTime < 200; # 判斷反應代號是否等於某一個指定的代號 tests["Status code name has string"] = responseCode.name.has("Created");
看這個用法,猜想tests
是一個JSON格式的對象,tests[...]
括號內的字符串是測試的描述, =
後面是判斷語句,而後將True或False賦予爲tests[..]
的值,而後postman輪訓全部tests
對象裏的參數,並返回pass與否的結果。測試
這裏是官方總結的經常使用測試腳本方法:Test examples
如下是我總結的經常使用的返回測試結果的內置函數:
# 「期待」返回結果必須包含某一段內容 pm.expect(從response裏獲取的字符串).to.include("必須包含的內容"); # 返回body值必須徹底等於某一段內容 pm.response.to.have.body("必須等於的內容"); # 反應時間必須少於200毫秒 pm.expect(pm.response.responseTime).to.be.below(200); # 必須返回某一個狀態 如"Created" pm.response.to.have.status("狀態名");