常用工具說明--強大的PostMan


PsotMan介紹和使用

Postman介紹

Postman是google開發的一款功能強大的網頁調試與發送網頁HTTP請求,並能運行測試用例的的Chrome插件。其主要功能包括:

  • 模擬各種HTTP requests

從常用的 GET、POST 到 RESTful 的 PUT 、 DELETE …等等。 甚至還可以發送文件、送出額外的 header。

  • Collection 功能(測試集合)

Collection 是 requests的集合,在做完一個測試的時候, 你可以把這次的 request 存到特定的 Collection 里面,如此一來,下次要做同樣的測試時,就不需要重新輸入。而且一個collection可以包含多條request,如果我們把一個request當成一個test case,那collection就可以看成是一個test suite。通過collection的歸類,我們可以良好的分類測試軟件所提供的API.而且 Collection 還可以 Import 或是 Share 出來,讓團隊里面的所有人共享你建立起來的 Collection。

  • 人性化的Response整理

一般在用其他工具來測試的時候,response的內容通常都是純文字的 raw, 但如果是 JSON ,就是塞成一整行的 JSON。這會造成閱讀的障礙 ,而 Postman 可以針對response內容的格式自動美化。 JSON、 XML 或是 HTML 都會整理成我們可以閱讀的格式

  • 內置測試腳本語言

Postman支持編寫測試腳本,可以快速的檢查request的結果,並返回測試結果

  • 設定變量與環境

Postman 可以自由 設定變量與Environment,一般我們在編輯request,校驗response的時候,總會需要重復輸入某些字符,比如url,postman允許我們設定變量來保存這些值。並且把變量保存在不同的環境中。比如,我們可能會有多種環境, development 、 staging 或 local, 而這幾種環境中的 request URL 也各不相同,但我們可以在不同的環境中設定同樣的變量,只是變量的值不一樣,這樣我們就不用修改我們的測試腳本,而測試不同的環境。

安裝Postman

Postman作為一個chrome的插件,你可以打開chrome,在chrome webstore里面找到。當然,如果是在國內,你需要翻牆,否則的話,你只能百度一下,搜索postman的安裝包自己安裝到chrome上。這里需要提一下的是,你可以不用打開chrome而直接使用Postman,具體的方法是:

選項->更多工具->擴展程序

詳細信息->創建快捷方式->‘全部勾上’ 
 
這樣你就可以在任何地方啟動你的Postman了

Postman sending requests

安裝好之后,我們先打開Postman,可以看到界面分成左右兩個部分,右邊是我們后頭要講的collection,左邊是現在要講的request builder。在request builder中,我們可以通過Postman快速的隨意組裝出我們希望的request。一般來說,所有的HTTP Request都分成4個部分,URL, method, headers和body。而Postman針對這幾部分都有針對性的工具。

URL

要組裝一條Request, URL永遠是你首先要填的內容,在Postman里面你曾輸入過的URL是可以通過下拉自動補全的哦。如果你點擊Params按鈕,Postman會彈出一個鍵值編輯器,你可以在哪里輸入URL的Parameter,Postman會幫你自動加入到URL當中,反之,如果你的URL當中已經有了參數,那Postman會在你打開鍵值編輯器的時候把參數自動載入

這里寫圖片描述

Headers

點擊’Headers’按鈕,Postman同樣會彈出一個鍵值編輯器。在這里,你可以隨意添加你想要的Header attribute,同樣Postman為我們通過了很貼心的auto-complete功能,敲入一個字母,你可以從下拉菜單里選擇你想要的標准atrribute

這里寫圖片描述

Method

要選擇Request的Method是很簡單的,Postman支持所有的Method,而一旦你選擇了Method,Postman的request body編輯器會根據的你選擇,自動的發生改變

這里寫圖片描述

Request Body

如果我們要創建的request是類似於POST,那我們就需要編輯Request Body,Postman根據body type的不同,提供了4中編輯方式:

  • form-data
  • x-www-form-urlencoded
  • raw
  • binary

(我們這里是可以傳文件的哦)

演示

我這里創建一條發送給google geocode的request,看看是啥結果:

這里寫圖片描述

注意,在URL里面我使用了變量googleMaps,並用{{}}調用它,這里是類似於AngulaJs的語法(果然是同一家人),其返回值是:http://maps.googleapis.com/maps/api/geocode/json。而這個變量我是定義在我的環境GoogleApiTest里面的。這部分的內容會在接下來的文章里面講到。

點擊了Send之后,可以在Postman上直接看到response的內容,內容很漂亮,Postman根據內容檢索自動按JSON的格式顯示出來,同時我們可以清楚的看到status code和花費的時間。

這里寫圖片描述

 

 

用PostMan進行測試

我們已經知道如何用Postman組裝並發送消息,那我們如何根據需求用Postman來做測試呢?在這開始之前,我們先來看看Postman的左邊面板:

這里寫圖片描述

這里包含了History和Collection,我們可以在History里面看到我們曾經發送過的HTTP Request, 我們可以很方便的通過點擊上面的項重新構建我們的request。而右邊的Request Builder面板上,還有兩個按鈕,Pre-request Script和Tests。

  • Pre-request Script 
    定義我們在發送request之前需要運行的一些腳本,應用場景主要是設置全局變量和環境變量
  • Tests 
    定義發送Request之后,需要用腳本檢測的內容,也就是Test case的內容。

這里的的Tests是我們關鍵。

Test

打開Tests,我們可以看到窗口分成兩部分,一部分是左邊的代碼窗口和右邊的Snippet窗口,點擊對應的snippet,postman會在左邊的窗口為我們生成對應的代碼,在下面的圖中,我選擇了“Response body: is equal to a String”和“Response time is less than 200ms”,可以看到Postman在代碼窗口為我加載對應的語句,這里我把希望的responseBody改成了“No valid parameters!!”. 
這樣我就完成一條簡單的測試用例:

  • 當HTTP Get request沒有帶任何參數的時候,希望response的body返回字符串“No valid parameters!!”
  • responseTime小於200ms

這里寫圖片描述

Variables and Environment

另外,這里大家可以看到在URL輸入框中,我使用了{{myLocalHost}},那我們如何定義變量呢,首先,我們得創建一個Environment,點擊Environment那個button(在這里是“SampleEnv”那個button,因為我將其選擇我當前使用的Environment)

這里寫圖片描述

在Postman里面:

  • Environements包含global Environment,即全局的Environment,里面定義的變量在任何地方地方都可以看到
  • local Environment, 里面定義的變量只有在當前Environment里面才可以看到,這里,我定義了一個“SampleEnv”
  • Environment可以被share,通過你的postman賬號或者google賬號
  • Environment可以通過文件import

點擊之后,選擇Manage Environments。若要新建,選擇Add。若要編輯global Environment, 選擇Globals

這里寫圖片描述

我們來看看我已經創建好的SampleEnv,這里只創建了一個變量myLocalHost,也就是我們之前看到的在URL里的那個變量,這個變量在URL里可以用,在test script里面可以用,任何其他地方你都可以通過{{}}符號獲得它的值。

這里寫圖片描述

這里稍微舉例一下變量的好處,比如你把APP部署在自己的機器上時使用的域名是localhost,而部署在服務器上時,域名就是具體的服務器ip。為了在兩種不同環境上測試你的API,你在構建request的時候就需要輸入不同的url,但如果你使用了變量,你就可以使用變量來復用你的url,你只需在不同的environment里面給url賦不同的值,那你的request就完全不需要變。同理,在tests里面也是一樣的。這里就不贅述

Collection

定義好了test case (寫好的Request和定義好結果檢查tests),我們就需要運行,你可以簡單點擊send按鈕查看結果,但這時候你不會明顯的看到測試的結果,你需要把這條request加入到collection當中。我們先創建一個collection:

這里寫圖片描述

在彈出的窗口中創建你的collection,命名為你test suite的名字:

這里寫圖片描述

創建collection之后,把已經寫好的request(test case)保存到collection(test suite)當中。

  • 點擊save,把Request Name改成你的test case的名字,比如“test_NoParameter_Expect_WarningInfo”;
  • save to exist collection,選擇之前創建好的collection, “TestParameters”;

這里寫圖片描述

點擊窗口中的save之后我們就可以在左界面上看到我們的這個collection和collection中的request了:

這里寫圖片描述

點擊 ‘>’按鈕(點擊了之后會變成 ‘<’),我們就會看到彈出的窗口中有一個‘Run’,運行一下,就會彈出一個collection runner的窗口。點擊一下start test,你就可以看到運行的結果,這里我選擇了運行100次,在左邊窗口你還可以看到之前的運行記錄:

這里寫圖片描述

加入我把App的接口改為:

 @Override
    protected void doGet( HttpServletRequest request, HttpServletResponse response )
        throws ServletException,
            IOException
    {
        if( request.getParameter( "name" ) != null )
        {
            response.getWriter().print( "lex" );
        }
        else
        {
            response.getWriter().print( "No valid parameters???" );
        }
    }
 

這會導致response body的比較不匹配 No valid parameters??? != No valid parameters!!

這里寫圖片描述

那你就會看到 Body is correct case是FAIL的.

 

 

用Postman生成Request代碼

Postman這款工具可以讓你很方便的測試你的Web API,那如果你實在是沒辦法用Postman,必須手寫代碼,又或者你有別的需求是Postman沒法實現的,你必須寫一個特殊的script或App來測試你的接口,那這時候是不是Postman就沒有用武之地了? 
我來個你share一個小技巧吧,管不管用你說的算。 
假設我現在要這樣來測我的接口: 
我們要設置用戶名和密碼: 
這里寫圖片描述 
我們要設置參數和Header: 
這里寫圖片描述 
如果讓你寫代碼來生成這個HTTP Request是不是感覺有點麻煩? 如果你也是個懶人,就打開Postman,配好你想要的HTTP Request,然后點擊上圖中的Generate Code吧,在彈出的窗口里面,你可以看到這條Request在各種語言里面的對應寫法,比如Java OK HTTP: 
這里寫圖片描述

OkHttpClient client = new OkHttpClient();

Request request = new Request.Builder()
  .url("http://maps.googleapis.com/maps/api/geocode/json?Address=%E4%B8%AD%E5%9B%BD%E5%9B%9B%E5%B7%9D%E6%88%90%E9%83%BD%E5%B8%82%E5%A4%A9%E5%8D%8E%E4%B8%80%E8%B7%AF&sensor=true")
  .get()
  .addHeader("accept", "application/xml")
  .addHeader("cache-control", "no-cache")
  .addHeader("pragma", "text/cmd")
  .addHeader("postman-token", "6f00b02c-419f-9b98-f2d3-942ddd1ba081")
  .build();

Response response = client.newCall(request).execute();

比如JavaScript AJAX:

var settings = {
  "async": true,
  "crossDomain": true,
  "url": "http://maps.googleapis.com/maps/api/geocode/json?Address=%E4%B8%AD%E5%9B%BD%E5%9B%9B%E5%B7%9D%E6%88%90%E9%83%BD%E5%B8%82%E5%A4%A9%E5%8D%8E%E4%B8%80%E8%B7%AF&sensor=true",
  "method": "GET",
  "headers": {
    "accept": "application/xml",
    "cache-control": "no-cache",
    "pragma": "text/cmd",
    "postman-token": "c7d566f4-0e21-9680-e47f-667b3e65280d"
  }
}

$.ajax(settings).done(function (response) {
  console.log(response);
});

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM