1. 程式人生 > >API測試工具---postman詳解

API測試工具---postman詳解

前言:

Postman是一款功能強大的網頁除錯與傳送網頁HTTP請求的Chrome外掛。


介面請求流程

一、get請求

GET請求:點選Params,輸入引數及value,可輸入多個,即時顯示在URL連結上,所以,GET請求的請求頭與請求引數如在介面文件中無特別宣告時,可以不填。


get請求示例

GET響應:右上角顯示響應HTTP狀態碼、請求的耗時。


get響應示例

需特別注意的是注意區別HTTP狀態碼與響應正文中的狀態碼,只有HTTP狀態碼是200時,才代表這個介面請求是正確的,這個是HTTP協議定義的,而響應正文的狀態碼,是程式設計師自已定義的,可以是200,也可以定義為其它值,是為了讓介面使用者去區分正常資料與異常資料。


狀態碼與響應碼不一致

二、POST請求

1、POST請求一:表單提交

先看下圖POST表單提交示例:


表單提交示例

上圖示例中設定了請求方法,請求URL,請求引數,但沒有設定請求頭。有一個要明確的點是,請求頭中的Content-Type與請求引數的格式之間是有關聯關係的。


Content-Type與請求引數的格式之間的關聯

當選擇x-www-form-urlencoded的引數方式後,postman自動的幫我們設定了Content-Type,所以不需要我們人工干預,這就是使用一款流行工具的好處,把一些基礎點都幫我們處理了。

2、POST請求二:json提交

先看下圖json提交示例:


json提交示例

上圖中,當我們選擇了JSON(application/json)時,postman同樣幫我們自動設定了Content-Type,可以自行的去檢視Headers.

3、post請求三:xml提交

先看下圖XML提交示例:


XML提交示例

上圖中,當我們選擇了XML(text/xml)時,postman同樣幫我們自動設定了Content-Type,可以自行的去檢視Headers.

4、post請求四:自行設定Content-Type

HTTP的POST請求的引數,都是放在請求正文中的,只是根據Content-Type來判斷請求正文的格式,那麼我們同樣可以在表單提交時,選擇raw,然後自行設定Content-Type為application/x-www-form-urlencoded。


POST請求的引數
自行設定Content-Type

5、POST請求五:二進位制檔案提交

先看下圖二進位制檔案示例:


二進位制檔案提交

Body下,選擇binary,在這裡你可以傳送視訊、音訊、文字等檔案。

三、postman斷言

一個完整的介面測試,包括:請求->獲取響應正文->斷言,我們已經知道了請求與獲取響應正文,下面來介紹如何用postman進行斷言。


Tests

這個”Tests”就是我們需要處理斷言的地方,postman很人性化的幫我們把斷言所用的函式全給準備好了:


SNIPPETS

舉例說明:首先設定一個斷言場景,根據斷言場景來舉例說明Postman斷言如何使用。

1、判斷HTTP返回狀態碼為200

2、判斷響應正文中是否包含:"statusCode":200

3、解析響應正文,並判斷statusCode的值是200,message的值是”Success”

第一步:在SNIPPETS中,往下拉,有一項”Status code:Code is 200”,這個就是為場景中的第 1 條準備的,判斷HTTP返回狀態碼是否為200。點選這一項,可以看到在其左邊,斷言程式碼自動新增,見下圖:


Status code

解釋一下這句程式碼的意思:

tests["Status code is 200"]中的tests是一個內建物件,tests["Status code is 200"]是指為這個斷言起個名稱叫”Status code is 200”,這個名稱可以自行修改。

responseCode.code === 200中的responseCode是內建物件,responseCode物件中有個屬性是code,是指HTTP狀態碼的code,判斷code是否為200.

綜合起來,這句程式碼的意思是:名稱為”Status code is 200”的斷言中,判斷responseCode物件的code屬性值(HTTP狀態碼)是否為200。

第二步:同樣在SNIPPETS中,找到一項”Response body:Contains string”,這個就是為場景中的第2條準備的,判斷響應正文中的欄位。點選後,在其左邊,斷言程式碼自動新增,見下圖:


Contains string1

其中我們需要修改想要在響應報文中找到的內容:

tests["Body matches string"] = responseBody.has('"statusCode":200');    //對照第2條場景:判斷響應正文中是否包含:"statusCode":200


Contains string2

第三步:我們需要解析JSON串了,所以,在SNIPPETS中找到”Response body:JSON value check”並點選,在其左邊,斷言程式碼自動新增,見下圖:


JSON value check1

我們可以看出,這裡面其實是JS程式碼,jsonData變數其實是解析完JSON後的物件,在JS中,一個JSON物件獲取其屬性的值,直接是用jsonData.value,於是,我們把程式碼給修改一下,來判斷第3條場景:

tests["response statusCode"] = jsonData.statusCode === 200;  //判斷statusCode的值是200

tests["response message"] = jsonData.message === 'Success';  //判斷message的值是”Success”


JSON value check2

這樣一來,我們可以看到一共有Tests的斷言4個,點選Send,傳送請求,在響應區內可以看到如下圖:表示斷言全部通過。

以上,SNIPPETS中還有很多的函式提供給我們,努力學習吧~~~

四、管理用例---Collections

Collections集合:也就是將多個介面請求可以放在一起,並管理起來。什麼樣的介面請求可以放在同一個collection裡?

在這裡告訴大家可以這樣:一個工程一個Collection,這樣方便查詢及統一處理資料。

第一步:建立Collections

點選上圖中的帶+號的圖示,輸入Name:”demo”,Description:”demo for Collections”,點選Create按鈕即建立成功一個Collections.


Create Collections

第二步,在Collections裡新增請求

在右側準備好介面請求的所有資料,並驗證後,點選save按鈕。


save按鈕

選擇Collection及填寫好Request name、Request description後,點選右下角的save to collection按鈕,則該請求被新增到Collection中。


save request

新增成功後,可在左側列表中,collection中檢視剛剛新增的請求。

第三步:Collection精細化---Folder

隨著放入Collection的請求越來越多,混亂就又出現了,在找一個請求時,要找半天,於是將collection中的請求分門類別就很重要了,於是,在collection中就可以新增Folder了,將相同場景的請求放入同一個Folder中,於是就實現了模組化的管理了。

點選下圖中的Add Folder後,即可建立Folder。


Add Folder按鈕位置

新增上Folder name,即模組名稱後,點選Create,建立成功一個Folder。


add Folder

接下來,只需要把相同場景的請求拖入相同的Folder即可,這樣就實現了模組化的管理了。模組化以後的結構:


模組化的管理結構

第四步:執行Collection

將工程模組化的用例管理起來後,藉著這個管理起來的東風,也可以將工程模組化的用例執行起來,即一次執行一整個collection裡的用例,或者執行一個collection裡的某一個Folder裡的用例。

點選下圖中的Run:


run

下圖中的”Choose collection or folder”,如果選擇demo,表示執行demo這一整個collection的用例,如果選擇GET,即只執行demo下的GET模組下的用例。

Environment,即執行環境,是開發環境還是測試環境,需事先配置,大家可以下去自已嘗試一下。

Iterations,即重複執行次數。會將選擇好的collection中folder重複執行。

Delay,間隔時間。用例與用例間的間隔時間。

Data,外部資料載入,即用例的引數化,可以與Iterations結合起來用,實現引數化,也就是資料驅動。

Run Demo,點選執行,執行完成後,即可得出一個簡易的聚合報告。

第五步:Collection執行引數化

在Iterations重複執行時,如果某個用例希望每次執行時,使用不同的資料,那麼應該滿足如下2個條件:

1、指令碼中要用到資料的地方引數化,即用一個變數來代替,每次執行時,重新獲取當前的執行資料。

2、需要有一個數據池,這個資料池裡的資料條數,要與重複執行的次數相同。

Postman的runner給我們提供了Iterations的輸入項,也提供了Data的檔案選擇項,也就是意味著資料池是一個外部檔案。

如果Iterations裡的值為2,那麼,這個外部檔案裡也應該有兩條資料,postman希望我們這個外部檔案裡的資料是一個json(當然也可以是其它

資料格式).

為了表示兩條資料,這個json應該是一個list結構(如下圖),同時,由於指令碼要用到資料的地方需要引數化,需要變數,所以,每一條資料應該就是一個map,map的key對應指令碼中的變數。


外部檔案裡的資料

上圖中表示提供了一個msg的變數,每次執行對應不同的值,預示著在指令碼中可以用到msg這個變數,那在指令碼中如何用?


使用變數

如上圖斷言中用data.msg,其中data是個內建物件,即代表每一次執行的那個map資料,所以,可以用data.msg來獲取每次執行的對應的值,當然,由於是個map,也可以用data[‘msg’]來獲取對應的值。

五、設定環境變數

有時需要在不同的環境下跑相同的測試,此時可以通過設定環境變數來動態選擇。點選右上角的設定按鈕-Manage Environments:


Manage Environments

填寫該環境的名稱:如測試環境,並在key和value中填寫需要的鍵值。


add1
add2

使用這些鍵值的時候只需要加上兩個花括號引用key,例如: {{url_base}}/admin/offer/


引用key

建立多個環境時,key通常都是相同的,只是value不同。建立好所有環境後,在跑用例的時候在右上角下拉列表選擇需要的環境就可以了。


選擇環境變數

六、身份驗證Authentication

顯示browser cookies,需要開啟Interceptor。點選右上角的Interceptor 進行安裝,並開啟:


Interceptor

身份驗證Authentication:

postman有一個helpers可以幫助我們簡化一些重複和複雜的任務。當前的一套helpers可以幫助你解決一些authentication protocols的問題。

1、Basic Auth

填寫使用者名稱和密碼,點選update request後,headers中自動新增Authorization。圖中使用者名稱和密碼均使用的key變數:


Basic Auth

2、Digest Auth

要比Basic Auth複雜的多。使用當前填寫的值生成authorization header。所以在生成header之前要確保設定的正確性。如果當前的header已經存在,postman會移除之前的header。

3、OAuth 1.0

postman的OAuth helper讓你簽署支援OAuth

1.0基於身份驗證的請求。OAuth不用獲取access token,你需要去API提供者獲取的。OAuth 1.0可以在header或者查詢引數中設定value。

4、OAuth 2.0

postman支援獲得OAuth 2.0 token並新增到requests中。

相關推薦

API測試工具---postman

前言:Postman是一款功能強大的網頁除錯與傳送網頁HTTP請求的Chrome外掛。介面請求流程一、get請求GET請求:點選Params,輸入引數及value,可輸入多個,即時顯示在URL連結上,所以,GET請求的請求頭與請求引數如在介面文件中無特別宣告時,可以不填。ge

MySQL自帶的效能壓力測試工具mysqlslap

PS:今天一同事問我有木有比較靠譜的mysql壓力測試工具可用。其實mysql自帶就有一個叫mysqlslap的壓力測試工具,還是模擬的不錯的。下面舉例說說。mysqlslap是從5.1.4版開始的一個MySQL官方提供的壓力測試工具。通過模擬多個併發客戶端訪問MySQL來執

通用HTTP測試工具開發

##一、背景 由於最近題主在做一些分散式測試工具的開發,想分享一些思路或者想法出來。 具體的產品可見,小米分散式測試平臺 (一)- 初識 Pecker。 因為涉及公司的專案以及保密性,故只分享一些這種工具的開發思路。 HTTP協議無論在公司內網或者公司外網來講

(總結)MySQL自帶的效能壓力測試工具mysqlslap

PS:今天一同事問我有木有比較靠譜的mysql壓力測試工具可用。其實mysql自帶就有一個叫mysqlslap的壓力測試工具,還是模擬的不錯的。下面舉例說說。mysqlslap是從5.1.4版開始的一個MySQL官方提供的壓力測試工具。通過模擬多個併發客戶端訪問MySQL

apache自帶的ab壓力測試工具用法

ab是apache自帶的一個很好用的壓力測試工具,當安裝完apache的時候,就可以在bin下面找到ab 1 我們可以模擬100個併發使用者,對一個頁面傳送1000個請求 ./ab -n1000 -c100 http://www.baidu.com 其中-n代表請求數,

Web效能壓力測試工具——Siege

Siege可以從您選擇的預置列表中請求隨機的URL。所以siege可用於模擬使用者請求負載,而ab則不能。但不要使用siege來執行最高效能基準調校測試,這方面ab就準確很多。 一、安裝 編譯安裝 wget http://www.joedog.org/pub/siege/siege-latest.

API測試工具SoapUI & Postman對比分析

本文由葡萄城技術團隊於部落格園原創並首發 轉載請註明出處:葡萄城官網,葡萄城為開發者提供專業的開發工具、解決方案和服務,賦能開發者。 最近公司要引入API測試工具,經過調查和了解,最終決定在SoapUI 和 Postman兩種工具之間做一個選擇,兩種工具在業界都很有名,相信很多人兩種工具也都曾使用

接口測試工具--postman

head alt 接口測試工具 選擇 地址 png raw http請求 eight postman     postman是chrome的擴展插件,用於發送http請求和網頁調試。界面如下圖示:          請求方法,發送請求的方式,下拉有很多種,一般都是get和

接口測試工具postman安裝及使用

posmanChrome瀏覽器之 Postman4.1.3 安裝http://www.cnblogs.com/wangfeng520/p/5892125.html 離線安裝Chrome Postman 和Postman Interceptor 插件 http://blog.csdn.net/longyc201

google瀏覽器安裝接口測試工具postman方法

ext ref 擴展 bsp 位置 targe 字符串替換 好的 配置 Google安裝postman: 未配好的文件下載(可選下面配好的直接用):下載 配置方法: 一:需要修改postman安裝包中js/requester.js 和runner.js ,將其中的aicm

三個繪圖工具

style red ict 貝塞爾 字號 清晰 mask startx 分享 1.相關方法詳解 1)Paint(畫筆): 就是畫筆,用於設置繪制風格,如:線寬(筆觸粗細),顏色,透明度和填充風格等 直接使用無參構造方法就可以創建Paint實例: Paint paint =

自動化運維工具——ansible(一)

數據 修改時間 們的 ransac 例如 ces 備份文件 其中 其他 ansible 簡介 ansible 是什麽?   ansible是新出現的自動化運維工具,基於Python開發,集合了眾多運維工具(puppet、chef、func、fabric)的優點,實現了批量系

開源API測試工具 Hitchhiker v0.6更新 - 改進壓力測試

高級 header 參數 分鐘 goroutine log parse 變量 otto Hitchhiker 是一款開源的支持多人協作的 Restful Api 測試工具,支持Schedule, 數據對比,壓力測試,支持上傳腳本定制請求,可以輕松部署到本地,和你的team成

關於U盤序列號讀取工具與分析

步驟 data size HR http set 而已 system 狀態 今天看到了一篇非常有意思的文章,個人覺得寫的屬實不錯,就拿來分享給大家一下。 原文如下: 我相信各位玩黑的朋友們都會很害怕一件事吧!那就是有一個別有用心的人把U盤插到了自己電腦上~該怎麽樣敏銳的

接口測試以及接口測試工具postman學習筆記

get請求 cati sign headers 學習筆記 CA 接口 準備 發送 經常碰到的接口有兩種,webservice接口和http api接口。websercive接口走的是soap協議,請求報文和返回報文都是xml格式的,因此我們需要借助接口測試的工具才能測試;h

Android逆向之旅---Hook神器家族的Frida工具使用

常見 fin () 文件的 數值 isp extern dex文件 所有 一、前言 在逆向過程中有一個Hook神器是必不可少的工具,之前已經介紹了Xposed和Substrate了,不了解的同學可以看這兩篇文章:Android中Hook神器Xposed工具介紹 和 Andr

Linux htop工具使用【轉】

進程信息 保存 作用 ctrl+c 設置 uri ppi 虛擬 獲取 原文地址: http://www.cnphp6.com/archives/65078 一.Htop的使用簡介 大家可能對top監控軟件比較熟悉,今天我為大家介紹另外一個監控軟件Htop,姑且稱之為top的

Java併發工具

在JDK的併發包裡提供了幾個非常有用的併發工具類。CountDownLatch、CyclicBarrier和Semaphore工具類提供了一種併發流程控制的手段,Exchanger工具類則提供了線上程間交換資料的一種手段。本章會配合一些應用場景來介紹如何使用這些工具類。 等待多執行緒完成的Cou

抓包工具Fidder 主要來抓取Android中app的請求

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Linux 測試cpu效能

原帖地址:http://os.51cto.com/art/201006/203872.htm 在這篇文章中,主要介紹Linux 測試cpu效能的一些基礎知識.首先介紹一下Linux kernel中的排程器(scheduler),排程器負責排程系統中的兩種資源,一是執行緒,二是中斷。