Postman 快速入門之腳本語法

Postman是訪問各類API的客戶端。它的強大之處在於其容許在對某一個request訪問的以前和以後分別運行自定義的一段Javascript腳本,這樣直接就完成了一個 chain request的效果,能夠將數條request連結成一個流程完成一體化測試。這在不少的API操做中都是極其有用的,因此這裏有必要總結一些經常使用語句。

腳本執行流程

image

  • pre-request腳本,是在對API進行請求以前的腳本,通常用於動態生成參數、JSON數據包、連接地址等。
  • test腳本,其實更應該叫post-request,實在完成API訪問並獲得其response迴應以後運行的腳本,通常用於獲取response的內容,用於以後對於別的資源的請求,如獲取頁面標題和內容等。

運行腳本要求

須要注意,pre-request腳本,在裏面直接寫代碼就能夠了,可是test腳本須要在某個指定的函數pm.test(...)中執行纔會被識別,且做爲test腳本運行。以下圖:
image
pm.test()中第一個參數是測試描述(會在測試結果欄顯示,應和其它測試描述作以區分),第二個參數是一個函數,具體執行代碼都在這個函數中運行。
另外,pm對象是Postman的主要對象,全部的內置函數,數據調用等,都須要經過它來實現。javascript

腳本調試

若是要看已經設置的Enviroment變量的話,能夠點開右上方小眼睛看到,以下圖,我設置了3個環境變量:
imagejava

調試時要打印的話,通常都是用console.log(...),這樣就能在console中看到。
若是你的Postman是Chrome app的話,直接在chrome瀏覽器的開發者工具裏調試就行。若是是Mac等桌面軟件,則須要打開內置的console才能看到調試信息。位置在左下角,以下圖:
imagechrome

經常使用語句 Code Snippets

通常會在腳本編寫欄的右邊都會有經常使用語句片斷,點擊如下就會出來代碼,可是一開始不太瞭解的話點出來其實也看不懂。以下圖:
image瀏覽器

官方文檔解釋的各類函數調用連接在這裏: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("狀態名");

image

相關文章
相關標籤/搜索