1. 程式人生 > >Postman介面測試自動化介紹

Postman介面測試自動化介紹

前言:平時可能大家只是簡單用postman來看一些請求返回的資料。其實它還具有很強大的介面自動化測試功能,它其實自己就提供了一個框架,它是採用js指令碼編寫的。其功能百度都可以查到使用方法,但感覺有點零散,我這裡整理了一下,把使用postman進行介面測試的方法整合了,圖文並茂,能快速掌握其使用。

1、postman簡要說明

Postman是一款功能強大的網頁除錯與傳送網頁HTTP請求的Chrome外掛,其提供了客戶端和外掛方式供大家使用。它除了方便開發除錯外,對測試人員也有很大的作用,是介面自動化測試的好幫手,每個迭代版本釋出時都可以通過postman執行一遍自動化介面用例,快速確保介面正確性,提高測試效率。下面進入正題,直接介紹使用它來進行介面自動化測試。

2、postman實現介面自動化測試

首先下載postman客戶端安裝包,然後按照提示安裝,不細說。安裝完後開啟介面如下:

 

通過左邊選單欄建立介面測試用例,主要程式碼編寫區域為pre-requestScript和Tests,如圖:

Postman提供了全域性變數和區域性變數的設定,提高了編寫測試指令碼的方便性,postman主要採用js指令碼編寫。直接上常用的公共全域性變數:

assertNotTimeout

var hasResponse=postman.getResponseHeader('Content-Type')?true:false; if(!hasResponse) tests['

服務端在超時前沒返回任何資料,請檢查相關服務、網路或反向代理設定(以下跳過其他斷言)']=false;

 

logParams

if(hasResponse) tests[`[INFO] 請求引數(超時沒返回時不解析):${JSON.stringify(request.data)}`]=true;

 

getResponseJson

try{if(hasResponse) var json=JSON.parse(responseBody);}catch(err){ tests['服務端沒返回合法的JSON格式,請檢查相關服務、網路或反向代理設定(以下跳過其他斷言)

']=false; tests[`[INFO] 返回:${responseBody}`]=true; console.error(err);};

 

assertType

var assertType=(name,value,type)=>{let isType=(type==='array')? Array.isArray(value):typeof value===type; tests[`${name}${type}(實際值:${value}`]=isType;};

 

assertEqual

var assertEqual=(name,actual,expected)=>{tests[`${name}等於${expected}(實際值:${actual}`]=actual===expected;};

 

assertNotEqual

var assertNotEqual=(name,actual,expected)=>{tests[`${name}不等於${expected}(實際值:${actual}`]=actual!==expected;};

設定方法如下:

 

設定完後儲存即可,然後在編寫測試指令碼直接使用即可,下面是指令碼編寫樣例:

var data="劉德華和天天向上的故宮還在";

pm.environment.set("data",data);

上面是設定傳送請求前的data資料,引數以{{data}}方式表示,如圖:

 

請求資料準備完成後,開始編寫測試指令碼,測試指令碼根據自己需要編寫,以下僅供參考。全域性變數使用方法如下:

eval(globals.assertNotTimeout);//判斷是否超時

eval(globals.getResponseJson);// 未超時,解析返回的JSON物件

eval(globals.assertNotEqual);// 返回元素是否與預期值不一致

assertNotEqual('code',json.code,403);//判斷返回的code不是403

一般情況下前面三個請求需要一起寫,具體如圖:

指令碼編寫完畢後,通過以下方式執行介面自動化:

點選run後會出現新的視窗:

設定完如上引數後,直接點選Run AutoTest按鈕即可,執行結果如下:

以上操作即完成了一次介面的測試,如需要進行某個介面的壓力測試,可以單獨設定迭代次數。

3、postman使用外部資料進行介面自動化

如果需要使用外部資料檔案進行測試,方法如下:

先準備好外部資料,一般使用csv檔案,可以直接用txt檔案編寫,然後儲存成.csv格式檔案,格式如下(第一行一定要寫引數化的名稱,帶中文的值需要儲存為utf-8格式,否則後面預覽時會出現亂碼):

然後定義需要引數化的位置和名稱:

在測試執行前使用如下方式指定該引數化需要匹配的值:

pm.environment.set("name", data.name);//這裡指定了引數化位置對應的值

console.log(data.name);//這裡是日誌列印

然後再編寫測試用例,如:

eval(globals.assertNotTimeout);

eval(globals.getResponseJson);

eval(globals.assertEqual);

assertEqual('code',json.code,200);

編寫完成指令碼後,同樣通過collection runner執行:

執行前可以開啟log工具檢查下執行時內容是否正確,按ctrl+alt+c調出日誌工具,最後直接執行,效果如下。

4、postman生成request程式碼

postman除了進行介面測試外還能生成支援多種語言的request程式碼,方便使用,步驟如下:

以上為postman比較實用的功能,百度上都有,這裡整合了一下供大家使用,方便大家快速學習。