【技術博客】Postman接口測試教程 - 環境、附加驗證、文件上傳測試

Postman接口測試教程 - 環境、附加驗證、文件上傳測試

v1.0javascript

做者:ZBWhtml


前言

利用Postman和Jmeter進行接口性能測試以後,咱們發現Postman做爲一款入門容易的工具,其內置的一些高級功能足夠幫助咱們對網站進行全面的接口測試。本文首先將介紹兩個比較關鍵的功能:環境(Environment)和附加代碼(Pre-request Script和Tests),這兩個功能可以幫助咱們對接口進行更加複雜的驗證,如驗證接口返回的信息等。除此以外,本文還將介紹文件上傳測試的運行方式。java

注:本文使用Native版本的Postman,以保證功能含有儘量少的Bug。json

配置和使用環境(Environment)

介紹

設想這樣的兩個場景:api

  • 當咱們的項目在開發服務器上開發基本完成,決定向發佈服務器部署時,咱們不只想測試開發服務器的功能,還想將一樣的測試應用到部署服務器上。當測試樣例數目不少時,手動修改每一個測試中的域名無疑是一件工做量很大而又浪費時間的事情。
  • 咱們的測試有先後依賴關係,後面的測試須要依賴前面測試返回的內容才能夠繼續運行。

Postman中提供了變量(Variable)的概念,專門用於解決以上的問題。特別地,Postman將一組變量成爲一個環境(Environment)。具體的說,一個環境能夠是一組常常被複用的鍵值對,也能夠是將先後測試關聯起來的內容。服務器

使用

1.新建環境dom

打開Postman,能夠看到右上角有No Environment字樣,說明咱們目前沒有應用任何環境變量。函數

點擊齒輪圖表打開環境的管理頁面:工具

進入後點擊Add能夠新建一個環境,並看到以下界面。在該界面中能夠設置變量的名稱、初值、當前值。點擊Add保存。若是點擊Globals能夠配置全局的變量。post

1560776741209

2.切換環境

回到開始的界面,點擊No Environment字樣能夠看到剛剛新建的環境,選中便可應用。

3.應用變量

Postman中以{{}}括起來的內容即爲變量。這些內容能夠出如今任何地方,包括域名、請求頭、請求參數以及後文敘述的腳本代碼中。例如若是咱們想解決以上的第一個問題,能夠將每一個請求的域名字段改成

{{domain}}/api/to/test

以後配置不一樣的環境,分別有domain變量指向不一樣網址便可。

配置請求前/後腳本

介紹

一樣,試想以下的場景:

  • 咱們的請求頭中須要包含當前時間戳,以方便服務器進行驗證。但每次運行測試都要輸入一下時間戳很是麻煩,且不夠準確。
  • 咱們的請求不管結果正確與錯誤與否都會返回HTTP 200,而正確與錯誤由返回內容的部分字段肯定,在錯誤時會返回一個錯誤碼用於區別錯誤類型。須要測試工具備對響應內容進行驗證的能力。
  • 仍是以前的先後測試關聯問題,須要有工具幫忙記錄以前請求返回的變量。

以上的場景分別可使用Postman附帶的請求前腳本和請求後測試腳原本實現。這二者本質上都是一段Javascript代碼,由Postman在請求發起先後放在沙盒(Postman Sandbox)中代爲執行,並可經過應用Postman對象獲取及修改測試相關的一些信息。

使用

請求前/後腳本的修改均位於配置請求的頁面上,如圖所示。

請求前腳本(Pre-request Scripts)

之前述的獲取時間爲例。能夠按以下方式編寫腳本,而且在請求頭中使用{{timestamp}}獲取值。

pm.environment.set('timestamp', new Date());

該段代碼中pm爲Postman對象,environment能夠獲取當前使用的環境變量,set方法能夠用於設置一個環境變量。

這樣當運行測試時就會先運行這段代碼獲取時間並賦給timestamp變量。

請求後腳本(Tests)

咱們的項目中定義了一些錯誤碼,能夠經過錯誤碼驗證服務端是否返回錯誤信息。

1.例如在生成報告的測試中Tests部分添加以下代碼

var jsonData = pm.response.json();

pm.test("Status is right", function () {
    pm.expect(jsonData.status).to.eql("success");
});

pm.test("Errorcode is right", function () {
    pm.expect(jsonData.errorcode).to.eql("0000");
});

pm.test("ExperimentId is right", function () {
    pm.expect(jsonData.experimentId).to.eql("2110114");
});

pm.test("Return a pdf link", function () {
    pm.expect(jsonData.link).to.include(".pdf");
});

其中pm.response.json()能夠獲取返回的響應信息並轉爲JSON對象。以後使用test方法和expect等函數對結果進行驗證。expect相似於斷言,當在Runner中運行時若是出現檢查不過則測試即便返回HTTP 200 結果也爲失敗(Fail)。

2.這裏的代碼還能夠用於關聯測試。以咱們的測試中獲取生成報告的連接爲例。咱們首先請求生成報告的接口,生成一個報告,以後收藏這一報告。

在生成報告的請求的Tests字段中配置

pm.environment.set("pdflink", jsonData.link);
pm.environment.set("reportId", jsonData.experimentId);

並在以後的收藏測試中請求信息爲:

link={{pdflink}}&reportId={{reportId}}

這樣以來即可以將以前響應結果傳入後續測試中。

文件上傳類測試

配置文件上傳測試的方式主要分兩步。

1.肯定/配置工做路徑

打開Postman的設置,能夠看到Working Directory的設置內容。這裏是Postman有權限讀取的文件位置,能夠將相關上傳的文件放在這裏。

2.在測試中添加文件

在form-data類的請求體中,能夠將Key的類型設置爲File,以後點擊選擇文件即可以增長文件了。

特別地,在該測試導出後,若是別人導入到另外一臺電腦進行測試,那麼文件將從其電腦上設置的Postman工做目錄下讀取。

相關文章
相關標籤/搜索