22 Postman+Newman 簡介和簡單使用

博客已遷移,該文章也是我16年那會寫的了,經(jīng)過幾年Postman已經(jīng)有不少變化,最近換團隊為了推廣這個工具,我對Postman文檔做了更新,詳細請到:米陽MeYoung

后續(xù)只在新地方維護文檔。

簡介

Postman 使一款可以方便我們調(diào)用API的工具,通過Postman 與 Newman結(jié)合我們還可以批量運行API達到API自動化測試的目的。

簡單分析:

優(yōu)點

  1. 上手容易
  2. 提供錄制插件,提高Case編寫速度
  3. 官方文檔齊全,用戶眾多
  4. 等等

不足

  1. 可擴展性較差
  2. 無法與數(shù)據(jù)庫結(jié)合
  3. 非開源
  4. Case校驗方式較少

簡單使用:

官方地址:https://www.getpostman.com/

Postman 安裝

Window 系統(tǒng)需要先安裝Chrome瀏覽器,然后在應用商店找到Postman插件,直接點擊安裝便可:https://chrome.google.com/webstore/detail/postman/fhbjgbiflinjbdggehcddcbncdddomop?hl=cn

Paste_Image.png

測試GET類型API

本小節(jié)摘錄:http://www.itdecent.cn/p/61cfcb436ee4
以豆瓣搜索圖書API為例

Paste_Image.png

這個接口的method為get,postman默認為get,在url欄輸入被測接口


get請求

在接口文檔中,q與tag其中的一個是必填項,所以這里需要配置參數(shù),點擊url右側(cè)的params,并輸入?yún)?shù)


點擊send按鈕發(fā)送請求,在下面可以看到返回的response,響應的狀態(tài)碼,與響應時間


response還可以以不同的方式查看,并且還可以看到cookies,headers信息


每次以不同的參數(shù)或者設置,在左側(cè)history都會幫我們記錄一個接口測試歷史,以便于下次重新調(diào)用


測試POST類型API

以Postman自帶的接口為例
選取請求的方法為POST,并輸入接口地址,因為post請求大多是json形式,所以可以打開Body選項,并選擇JSON(application/json)形式,輸入請求的json,同樣其余的操作跟GET接口一樣。


post

變量的設置

編寫的API往往需要在多個環(huán)境下執(zhí)行,而Postman 提供了兩種類型的變量:環(huán)境變量和全局變量,從而很好的解決了這個問題。
環(huán)境變量有效范圍僅僅在于你所選取的環(huán)境,全局變量對所有的環(huán)境都試用。

環(huán)境變量

api可能需要在撥通的環(huán)境中運行,所以api請求的服務器地址不能寫死,希望是可以配置的,創(chuàng)建環(huán)境變量有多種方式。

  1. 手工預先創(chuàng)建環(huán)境變量
addENV.gif
  1. 代碼自動創(chuàng)建環(huán)境變量
    自動新建環(huán)境變量可在兩種情況下創(chuàng)建,但是創(chuàng)建方式相同都是用了postman提供的方法:
    postman.setEnvironmentVariable("key", "value");

  2. 在某個請求發(fā)起之前創(chuàng)建:
    在Pre-request Script標簽里面添加代碼:


    autoENV1.gif
  3. 在某個請求發(fā)起之后創(chuàng)建:
    在Tests標簽里面添加如下


    Paste_Image.png

全局變量

全部變量跟環(huán)境變量的創(chuàng)建類似,也可以通過手工預先創(chuàng)建或者通過代碼去創(chuàng)建。

  1. 通過手工預先創(chuàng)建
全局變量設置.gif
  1. 通過代碼創(chuàng)建
    2.1 在請求發(fā)起前創(chuàng)建
    在Pre-request Script標簽里面添加代碼:
postman.setGlobalVariable("key", "value");

2.2 在請求發(fā)起后創(chuàng)建
在Tests標簽里面添加如下:

postman.setGlobalVariable("key", "value");

變量的引用

在需要的地方加上{{變量名}}便可

隨機數(shù)

PostMan 除了提供環(huán)境變量和全局變量外,還提供了三種隨機數(shù)。
{{$guid}}
:添加一個V4風格GUID

{{$timestamp}}
:將當前的時間戳,精確到秒

{{$randomInt}}
:添加0和1000之間的隨機整數(shù)

測試

本節(jié)摘錄:http://www.itdecent.cn/p/61cfcb436ee4
  Postman可以在tests里面,用自帶的腳本對接口進行測試,單擊tests標簽后可以看到右側(cè)有個snippets欄,里面就是postman內(nèi)置的測試腳本,輔助對接口進行測試。

選擇其中的一個腳本,修改其中的參數(shù),再次點擊send,這時response的tests出現(xiàn)了一個1/1,說明執(zhí)行一個測試并且通過測試,綠色pass說明驗證通過


紅色fail說明測試不通過,一個接口可以寫多個腳本進行多次測試



  內(nèi)置腳本說明:

1. 清除一個全局變量
     Clear a global variable
    對應腳本:
    postman.clearGlobalVariable("variable_key");
    參數(shù):需要清除的變量的key

2.清除一個環(huán)境變量
    Clear an environment variable
    對應腳本:
    postman.clearEnvironmentVariable("variable_key");
    參數(shù):需要清除的環(huán)境變量的key

3.response包含內(nèi)容
    Response body:Contains string
    對應腳本:
    tests["Body matches string"] =responseBody.has("string_you_want_to_search");
    參數(shù):預期內(nèi)容

4.將xml格式的response轉(zhuǎn)換成son格式
    Response body:Convert XML body to a JSON Object
    對應腳本:
    var jsonObject = xml2Json(responseBody);
    參數(shù):(默認不需要設置參數(shù),為接口的response)需要轉(zhuǎn)換的xml

5.response等于預期內(nèi)容
    Response body:Is equal to a string
    對應腳本:
    tests["Body is correct"] = responseBody === "response_body_string";
    參數(shù):預期response

6.json解析key的值進行校驗
    Response body:JSON value check
    對應腳本:
    tests["Args key contains argument passed as url parameter"] = 'test' in responseJSON.args
    參數(shù):test替換被測的值,args替換被測的key

7.檢查response的header信息是否有被測字段
    Response headers:Content-Type header check
    對應腳本:
    tests["Content-Type is present"] = postman.getResponseHeader("Content-Type");
    參數(shù):預期header

8.響應時間判斷
    Response time is less than 200ms
    對應腳本:
    tests["Response time is less than 200ms"] = responseTime < 200;
    參數(shù):響應時間

9.設置全局變量
      Set an global variable
      對應腳本:
      postman.setGlobalVariable("variable_key", "variable_value");
      參數(shù):全局變量的鍵值

10.設置環(huán)境變量
      Set an environment variable
      對應腳本:
      postman.setEnvironmentVariable("variable_key", "variable_value");
      參數(shù):環(huán)境變量的鍵值

11.判斷狀態(tài)碼
      Status code:Code is 200
      對應腳本:
      tests["Status code is 200"] = responseCode.code != 400;
      參數(shù):狀態(tài)碼

12.檢查code name 是否包含內(nèi)容
      Status code:Code name has string
      對應腳本:
      tests["Status code name has string"] = responseCode.name.has("Created");
      參數(shù):預期code name包含字符串

13.成功的post請求
      Status code:Successful POST request
      對應腳本:
      tests["Successful POST request"] = responseCode.code === 201 || responseCode.code === 202;

14.微小驗證器
       Use Tiny Validator for JSON data            
       對應腳本: 
        var schema = {
         "items": {
         "type": "boolean"
             }
         };
        var data1 = [true, false];
        var data2 = [true, 123];
        console.log(tv4.error);
        tests["Valid Data1"] = tv4.validate(data1, schema);
        tests["Valid Data2"] = tv4.validate(data2, schema);
        參數(shù):可以修改items里面的鍵值對來對應驗證json的參數(shù)

使用Runner功能和外部數(shù)據(jù)

Postman 工具自帶了Runner功能,用于批量運行腳本。在運行時還可以使用外部的CSV或者json文件來指定數(shù)據(jù)。
  例如現(xiàn)在新建了如下兩個外部數(shù)據(jù),第一個保存為.json文件,第二個保存為.csv文件。


json.png
csv.png

  新建如下GET請求API,并放于單獨一個文件夾中管理。接口請求中{{host}}便是用來獲取上步新建的兩個文件夾中的數(shù)據(jù),{{}}中的名字對應json文件的key值,對應csv文件中的第一行值。


Paste_Image.png

  點擊Runner按鈕,打開Runner界面:


Paste_Image.png

  在新打開的窗口中,選著你要剛新建的文件夾名,選擇你要運行的環(huán)境,運行的次數(shù)和在Data File中選擇剛新建的外部json或者csv文件,并選取文件類型,點擊Start Test,變開始逐條讀取外部文件中的數(shù)據(jù),進行運行。
Paste_Image.png

Postman Interceptor

Interceptor 可以直接從瀏覽器中獲取請求,并保存在Postman的History中。 這個插件可以大大縮短API配置的時間,同樣Interceptor還有一個功能可以讓Postman和Chrome瀏覽器共用Chrome的Cookies。

安裝 Interceptor

Interceptor 同樣是Chrome的一個插件,所以也可以從Chrome網(wǎng)上商店找到該插件: https://chrome.google.com/webstore/detail/postman-interceptor/aicmkgpgakddgnaphhhpliifpcfhicfo/support?hl=cn ,直接點擊安裝。安裝完后會在Chrome 插件中找到下圖標識。

Paste_Image.png

使用 Interceptor

開啟Interceptor插件,并設置你要抓取的網(wǎng)站請求


Paste_Image.png

在Postman 上同樣打開Interceptor


Paste_Image.png

這時在Chrome瀏覽器上訪問一些baidu相關域名就會自動被Postman抓取,并在Postman的History顯示


Paste_Image.png

Newman

官方幫助文檔地址:https://www.npmjs.com/package/newman

Newman 安裝

嗯,它需要安裝,因為它不是音樂播放器!Newman是為Postman而生,專門用來運行Postman編寫好的腳本。Newman安裝步驟:

  1. 需要安裝nodejs,并配置好環(huán)境
  2. 打開控制臺,運行:npm install -g newman
Paste_Image.png
  1. 校驗是否安裝成功,運行:newman --version
Paste_Image.png

Newman 執(zhí)行腳本

Newman在3版本后做了比較大的改動,但是運行命令越來越簡單如下:

newman run <collection-file-source> [options] 

run 后面跟上要執(zhí)行的json文件或者URL(json 和 URL 都由postman導出生成),再后面跟一些參數(shù),例如環(huán)境變量,測試報告,接口請求超時時間等等。最后給兩個完整的例子做參考:
例子1,通過newman 運行postman導出的test1.json文件,并生成多種測試報告(json,junit的xml,html):

newman run c:\test1.json --reporters cli,html,json,junit --reporter-json-export jsonOut.json --reporter-junit-export xmlOut.xml --reporter-html-export htmlOut.html

例子2,運行https://www.getpostman.com/collections/cb0cea0af1467c8008fb(postman生成的 )中的所有api,并使用env.json作為環(huán)境變量和globals.json作為全局變量,并使用外部data.csv作為外部數(shù)據(jù),最后設置了接口請求超時時間為5S 。

newman run https://www.getpostman.com/collections/cb0cea0af1467c8008fb --environment env.json --iteration-data data.csv --globals globals.json --timeout-request 5000

Jenkins 結(jié)合

平時做接口自動化,避免不了最后通過Jenkins做構(gòu)建。既然Newman提供了控制臺命令執(zhí)行方式,那么像通過Jenkins來構(gòu)建也就容易多了。
步驟一:在Jenkins 機器上安裝Newman
步驟二:搭建Jenkins環(huán)境,并新建個自由風格的Job
步驟三:構(gòu)建選擇Execute Windows batch command,并輸入newman 運行命令

Paste_Image.png

步驟四:因為上面命令中構(gòu)建會生成junit的xml報告,所以可以在構(gòu)建后用Publish JUnit test result report 插件來生成測試報告。

Paste_Image.png

8/31/2018 更新

最近發(fā)現(xiàn)Postman在chrome商店中下架了,原因猜測就是因為chrome有計劃取消chrome應用引起,現(xiàn)在postman 只能安裝桌面版。 那么桌面版的捕獲方式有所變更,今天順便簡單說下桌面版如何捕獲瀏覽器請求。

  1. 點擊proxy,打開Proxy設置,并設置代理端口和抓取的保存位置,截圖設置了5555端口,并保存到History.


    image.png
  2. 設置IE或者系統(tǒng)代理,以win 10系統(tǒng)為例子,打開IE 設置代理。 (不用時記得關閉IE或者系統(tǒng)代理)windows上設置代理可以參考:https://www.howtogeek.com/tips/how-to-set-your-proxy-settings-in-windows-8.1/
    image.png

    image.png
  3. 打開瀏覽器,正常請求,會發(fā)現(xiàn)這時postman 的history也會捕獲到請求。


    image.png
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評論 19 139
  • Postman helps you develop APIs faster. 豪華午餐 Postman 構(gòu)建、管理...
    Yuan_Jie閱讀 31,219評論 36 134
  • 前言: Postman是一款功能強大的網(wǎng)頁調(diào)試與發(fā)送網(wǎng)頁HTTP請求的Chrome插件。 一、get請求 GET請...
    小喜_ww閱讀 24,074評論 2 43
  • Postman用法簡介-Http請求模擬工具 在我們平時開發(fā)中,特別是需要與接口打交道時,無論是寫接口還是用接口,...
    奧利奧龍卷風閱讀 4,344評論 2 9
  • Postman是一款強大的API接口測試工具,有許多不容易發(fā)現(xiàn)的好用的功能,下面簡單介紹其中一部分功能。詳細內(nèi)容可...
    selfboot閱讀 8,631評論 6 25

友情鏈接更多精彩內(nèi)容