Postman高級使用——Tests 斷言校驗返回結果

一、引言

Postman的test本質上是JavaScript代碼,經過咱們編寫測試代碼,每個tests返回True,或是False。
每個tests實際上就是一個測試用例html

二、對接口進行Tests測試

Tests斷言:比較預期結果和實際結果
(編輯文本採用js語言,對於初學者來講能夠直接點擊右邊的系統自帶配置js)web

引用變量{{變量名稱}}面試

 

 

 

 

好比搜貓,那麼咱們就選擇Response body:Contains string正則表達式

 

pm.test("Body matches string", function () { pm.expect(pm.response.text()).to.include("string_you_want_to_search"); });

 

 

pm.test("檢查返回內容是否正確", function () { pm.expect(pm.response.text()).to.include("<titile>貓_百度搜索</titile>"); });

 

 

 附百度搜貓抓過來的接口Urljson

 

http://www.baidu.com/s?wd=貓

 

 

附JSON在線視圖查看器微信

http://www.bejson.com/jsonviewernew/

 

三、簡單實例測試(檢查百度搜貓返回請求狀況)

//一、檢查返回值
pm.test("檢查返回內容是否正確", function () { pm.expect(pm.response.text()).to.include("<title>貓_百度搜索</title>"); }); //二、檢查狀態碼
pm.test("檢查狀態碼", function () { pm.response.to.have.status(200); }); //三、檢查響應時間
pm.test("檢查響應時間小於300ms", function () { pm.expect(pm.response.responseTime).to.be.below(300); });

 

 顯示結果app

 

 

ps:檢查響應時間會因網速而發生變化,返回Fail有時是正常的框架

 

 

四、環境變量管理使用

//一、檢查返回值
pm.test("檢查返回內容是否正確", function () { pm.expect(pm.response.text()).to.include("<title>貓_百度搜索</title>"); }); //二、檢查狀態碼
pm.test("檢查狀態碼", function () { pm.response.to.have.status(200); }); //三、檢查響應時間
pm.test("檢查響應時間小於300ms", function () { pm.expect(pm.response.responseTime).to.be.below(300); }); //四、獲取狀態碼
var code=responseCode.code; //五、設置全局變量
pm.globals.set("codename", code);

 

經過js腳本咱們獲取狀態碼後,存在一個全局變量codename裏面,而後咱們打開環境變量管理進行查看,以下:工具

 

 

 

 

 

實例二:將微信獲取token的返回值提取token出來,在後面的接口中進行引用

  •  在Tests中進行腳本測試
//一、獲取jsonData數據包
var jsonData=JSON.parse(responseBody); //二、經過json包獲取對應字段名access_token
var token=jsonData.access_token; //設置token全局變量
pm.globals.set("myToken",token);

 

  • 查看環境變量管理內容以下:

 

 

六、正則表達式使用(以獲取微信的token爲例)

  • 上面那個獲取腳本的方式實際上是有一個缺點的,那種方式只能獲取一個JSON格式的值,而當咱們切換類型後就沒辦法獲取了,因此咱們能夠採用更好一點的方法,正則表達式

 

var token=responseBody.match(new RegExp('\access_token\":\"(.+?)\"'))[1]; pm.globals.set("weixin_token",token);

 

 

七、提出問題①(關於百度在不一樣環境訪問問題):

當咱們訪問百度時,能夠經過網址進行訪問,也能夠經過IP地址進行訪問,那麼咱們切換不一樣的環境時,如何讓它們都能用呢?學習

    •  如何查看百度的IP地址呢?
      首先WIN+R 進入cmd
      而後輸出如下命令:

 

nslookup www.baidu.com

 

 

因而咱們能查看到以下內容(每一個電腦的顯示界面可能不同)

 

 

經過查看,咱們就能獲得百度的三種環境:生產環境、測試環境、預發佈環境

www.baidu.com 生產環境 IP地址: 183.232.231.172 測試環境 183.232.231.174         預發佈環境

 

  • 公司的環境有哪些?

        開發環境:開發人員用來編碼調試
        測試環境:測試人員找bug
        預發佈環境:模擬的真實環境
        生產環境:用戶真實使用的

PS:那麼咱們將主機設置爲全局變量,這樣咱們對於不一樣的環境都可以使用,此時咱們打開Postman,進入以前的環境變量管理,點擊Add而後添加這三個環境,注意咱們的環境變量名稱要統一

一、測試環境配置

 

 

二、生產環境配置

 

 

三、預發佈環境配置

 

 

八、提出問題②(關於請求頭封裝隱藏問題)

  •  ①提取返回值(正則表達式、json)
  • ②環境變量的設置
  •  ③修改請求頭
  •  ④參數化循環取值

以前各個環境配置好了以後,咱們發送send請求後,打開咱們的Fiddler工具查看咱們的請求頭,發如今User-Agent會直接顯示咱們的Postmanxxx,這樣的接口確定會出問題的,咱們應該如何進行隱藏封裝呢?

很簡單,就是咱們直接去訪問百度,去拿到百度的Headers的信息就行了,而後去修改咱們本身接口的key-value值

下面是我從百度拷下來的Headers,能夠直接使用

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 Accept-Encoding: gzip, deflate, br Accept-Language: zh-CN,zh;q=0.9,en;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36

 

而後在接口那選擇Headers,採用文本方式直接複製過去便可

 

 

PS:咱們這裏是引用了全局變量baiduUrl,是以前配置的三個環境的變量名稱

那麼如今咱們的Headers請求頭就封裝好了,咱們再send一下,採用預發佈環境試試~

 

 

結果很顯然,修改爲了百度的請求頭了,說明隱藏成功!

 

 

 

但願本文對你有所幫助~~若是對軟件測試、接口測試、自動化測試、面試經驗交流感興趣能夠加入咱們。642830685,免費領取最新軟件測試大廠面試資料和Python自動化、接口、框架搭建學習資料!技術大牛解惑答疑,同行一塊兒交流。

 

相關文章
相關標籤/搜索