基於Postman的API自動化測試

1. 安裝

兩種安裝方式,我熱衷於以chrome插件形式安裝
Chrome插件
Mac Apphtml

2. 發送請求

Postman最基礎的功能就是發送http請求,支持GET/PUT/POST/DELETE,還有不少我不認識的http方法。git

經過填寫URL、header、body等就能夠發送一個請求,這對於咱們平時作一些簡單的測試是夠用的。github

若是你的應用須要用到登陸驗證,能夠經過填寫Authorization以知足你的需求。
另外也可使用Chrome瀏覽器已經登陸的cookie,同步瀏覽器的cookie須要安裝另外一個插件Interceptor(攔截機)。它能夠在你發送請求時幫你將已經存在於瀏覽器的數據隨header請求,另外它能夠將瀏覽器的請求寫到postman的歷史中(須要開啓「Request Capture」
)。web

3. 集合

每次配置完一個請求均可以保存到一個集合中,如此一來,下次測試能夠直接從集合中找到你要執行的測試。chrome

集合不僅僅只有分類和存儲功能,Postman支持一鍵運行整個集合內的測試。npm

咱們能夠把一個請求當作一個Test Case, 那麼集合就是一個Test Suite。json

每一個集合都對應一個URL,能夠經過Share按鈕得到你的集合URL,這個URL能夠用於分享給你的隊友,或者用於Newman執行。api

Newman是Postman的一個命令行工具,可讓API測試加入到你的持續集成任務上。瀏覽器

4. 環境變量

當作API測試時,你可能常常須要切換不一樣的設置。好比,開發環境的API設置、測試環境和產品環境的API設置,你可能須要在不一樣的測試環境下使用不一樣的配置。爲此Postman提供了環境變量,這樣你就能夠經過修改環境變量,而不需修改請求了。服務器

你能夠經過右上角的下拉菜單選擇環境,能夠經過點擊右側的小眼睛來查看當前環境變量。

5. API測試

Postman測試沙箱是一個JavaScript執行環境,能夠經過JS腳原本編寫pre-requist和測試腳本。pre-requist能夠用來修改一些默認參數。

Postman沙箱集成了幾個工具庫,好比lodashSugarJstv4,還有一些內置函數如xml2JSON..

tv4用於驗證JSON數據,經過編寫JSON Schema來驗證,JSON Schema的語法請參照這裏

測試語法:

// description 爲該測試的描述
// value 只要Boolean(value)不等於false,這個測試就是PASS
tests[description] = value

// example
tests["Status code is 200"] = responseCode.code === 200;

咱們以github status的接口爲例:
url: https://status.github.com/api/status.json

tests["Status code is 200"] = responseCode.code === 200;

// validate json schema
var schema = {
  properties: {
      status: {type: 'string'},
      last_updated: {type: 'string'}
  }
};

tests["Valid data schema"] = tv4.validate(responseBody, schema);

// check status
var jsonData = JSON.parse(responseBody);
tests["Github status is good"] = jsonData.status === 'good';

運行結果:

示例

http://httpbin.org/ 啓發,Postman也提供了一套入門的API http://dump.getpostman.com/ ,接下來咱們將利用這套API作完整的測試。

1. 建立一個環境變量


點擊Manage Environments,而後點擊Add


添加一個URL變量,咱們會在後續使用

2. 請求一個新用戶

咱們須要經過發送一個POST請求到{{url}}/blog/users/來建立一個用戶,並須要附加下面的參數到請求body中:

注:記得將環境變量切換到dump.getpostman.com,這樣咱們才能獲取到{{url}}變量

{
  "username": "abhinav",
  "password": "abc"
}

這個接口如今好像不支持建立用戶了,咱們假設已經建立成功了,由於這不影響咱們後續操做

3. 獲取用戶的Token

Token用於授予終端請求和訪問權限的。咱們能夠經過POST用戶名和密碼請求 {{url}}/blog/users/tokens/ 來獲取用戶的Token,這個Token將用於其餘請求中。

{
  "username": "abhinav",
  "password": "abc"
}

4. 格式化JSON

咱們須要從上面的請求結果中獲取到用戶Token和用戶ID,並將這兩個值保存到環境變量中,以供後續使用。將下面這段代碼添加到測試編輯器中:

var data = JSON.parse(responseBody);

if (data.token) {
  tests["Body has token"] = true;
  postman.setEnvironmentVariable("user_id", data.user_id);
  postman.setEnvironmentVariable("token", data.token);
}
else {
  tests["Body has token"] = false;
}

5. 建立一篇文章

若是上面的測試是在主窗口或者集合運行器中執行,那麼 user_idtoken 會自動地被添加到環境變量中。
爲了建立一篇文章,咱們須要發送一個POST請求到 {{url}}/blog/posts ,並將 user_idtoken 添加在URL參數中。POST的請求Body以下:

{
  "post": "This is a new post"
}

6. 檢查返回數據

若是上述的請求成功的話將返回一個帶有post_id的JSON。咱們將在這裏驗證是否建立文章成功,而且將文章ID保存到環境變量。將下面這段代碼添加到測試編輯器中:

var data = JSON.parse(responseBody);
 
if (data.post_id) {
  tests["post_id found"] = true;
 
  postman.setEnvironmentVariable("post_id", data.post_id);
}
else {
  tests["post_id found"] = false;
}

7. 獲取一篇文章並驗證JSON

咱們將經過上面返回的文章ID來獲取咱們建立的文章。這裏咱們將用到Postman內置的 tv4 JSON 驗證器來檢查服務器響應的JSON。
建立一個GET請求到 {{url}}/blog/posts/{{post_id}},並將下面這段代碼添加到測試編輯器中:

var schema = {
  "type": "object",
  "properties": {
    "content": "string",
    "created_at": "integer",
    "id": "integer"
  },
  "required": ["content", "created_at", "id"]
};
 
var data = JSON.parse(responseBody);
 
var result = tv4.validateResult(data, schema);
 
tests["Valid schema"] = result.valid;

8. 一鍵運行與分享集合

咱們將上述每個測試保存到PostmanTest的集合中,這樣咱們就能夠在任什麼時候候打開和運行你想要的測試,而且能夠一鍵運行全部,或者將集合分享給你的小夥伴,也能夠獲取嵌入式代碼(以下面的按鈕)。

本文的全部測試用例都在這裏

Run in Postman

參考

https://www.getpostman.com/docs

相關文章
相關標籤/搜索