Postman如何做API 自動化測試
1. 安裝
兩種安裝方式,我熱衷於以chrome外掛形式安裝 Chrome外掛 Mac App
2. 傳送請求
Postman最基礎的功能就是傳送http請求,支援GET/PUT/POST/DELETE,還有很多我不認識的http方法。
通過填寫URL、header、body等就可以傳送一個請求,這對於我們平時做一些簡單的測試是夠用的。
如果你的應用需要用到登入驗證,可以通過填寫Authorization以滿足你的需求。 另外也可以使用Chrome瀏覽器已經登入的cookie,同步瀏覽器的cookie需要安裝另一個外掛Interceptor(攔截機)。它可以在你傳送請求時幫你將已經存在於瀏覽器的資料隨header請求,另外它可以將瀏覽器的請求寫到postman的歷史中(需要開啟“Request Capture” )。
3. 集合
每次配置完一個請求都可以儲存到一個集合中,如此一來,下次測試可以直接從集合中找到你要執行的測試。
集合不單單隻有分類和儲存功能,Postman支援一鍵執行整個集合內的測試。
我們可以把一個請求當做一個Test Case,那麼集合就是一個Test Suite。
每個集合都對應一個URL,可以通過Share按鈕獲得你的集合URL,這個URL可以用於分享給你的隊友,或者用於Newman執行。
Newman是Postman的一個命令列工具,可以讓API測試加入到你的持續整合任務上。
4. 環境變數
當做API測試時,你可能經常需要切換不同的設定。比如,開發環境的API設定、測試環境和產品環境的API設定,你可能需要在不同的測試環境下使用不同的配置。為此Postman提供了環境變數,這樣你就可以通過修改環境變數,而不需修改請求了。
你可以通過右上角的下拉選單選擇環境,可以通過點選右側的小眼睛來檢視當前環境變數。
5. API測試
Postman測試沙箱是一個JavaScript執行環境,可以通過JS指令碼來編寫pre-requist和測試指令碼。pre-requist可以用來修改一些預設引數。
Postman沙箱集成了幾個工具庫,比如lodash、SugarJs、tv4,還有一些內建函式如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: status.github.com/api/status.…
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‘;
執行結果:
示例
受 httpbin.org/ 啟發,Postman也提供了一套入門的API 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_id 和 token 會自動地被新增到環境變數中。 為了建立一篇文章,我們需要傳送一個POST請求到 {{url}}/blog/posts ,並將 user_id 和 token新增在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的集合中,這樣我們就可以在任何時候開啟和執行你想要的測試,並且可以一鍵執行所有,或者將集合分享給你的小夥伴,也可以獲取嵌入式程式碼,可私聊我進行探討或加我們的軟體測試交流:829792258,裡面有各種軟體測試資料和技術交流。