一個簡單的postman設置斷言,為何會難住一個工作5年的測試?

postman設置斷言

作為一款接口測試工 具,postman需要對發送請求后返回的結果是否正確做驗證,在postman中通過 tests頁簽做請求的驗證,也稱為斷言。

postman設置斷言的流程

1、在tests頁簽截取要對比的實際響應信息(響應頭、響應正文、響應狀態碼等)
2、利用斷言語句 tests[] 或 chai.js 形式把實際響應信息與期望結果對比
3、執行請求進行結果查看

在postman設置斷言,存在新老版本的斷言語法不一致的情況,目前兩種語 法都可以使用:

語法一:?tests[‘測試用例名稱’] = 邏輯表達式;

斷言語法一視圖:

postman在tests頁簽獲取響應內容:

tests頁簽支持javascripts語法,可以把獲取的響應內容放入定義的變量中。 然后使用tests[變量名]進行輸出。

截取實際響應信息的新老版本代碼對比;如下圖

?

1、獲取響應行

var code = responseCode.code; //獲取響應狀態碼
var name = responseCode.name; //獲取響應狀態信息

2、獲取響應頭

var content_type = postman.getResponseHeader('Content-Type') //獲取響應頭
var path = postman.getResponseCookie('_ac_app_ua').path ; //獲取cookie信息

3、獲取響應正文

var body = responseBody

4、獲取響應時間

var time = responseTime;

5、利用正則表達式截取部分響應正文

var title = body.match(new RegExp('<title>(.+?)</title>'))[1];

6、響應正文為json時,可以利用postman進行解析再獲取部分響應正文

var jsondata = JSON.parse(responseBody); //把響應正文轉化為json對象
var token = jsondata.access_token; //json對象名.鍵名

在tests頁簽中編寫語法如下圖:

復制代碼

// 新舊版本寫法------------
//獲取響應行
//舊版本
var code = responseCode.code  //獲取響應狀態碼
tests["case_demo_01: 驗證響應狀態碼是否為200"] = code === 200 //做斷言
var name = responseCode.name  //獲取響應狀態信息
tests["case_demo_02: 驗證響應的狀態信息是否正確"] = name === "OK"
//新版本
var code = pm.response.code //獲取響應狀態碼
tests["case_demo_001: 驗證響應狀態碼是否為200"] = code === 200 //做斷言
var name = pm.response.status  //獲取響應狀態信息
tests["case_demo_002: 驗證響應的狀態信息是否正確"] = name === "OK"//獲取響應頭//舊版本
var content_type = postman.getResponseHeader('Content-Type')  //獲取響應頭
tests["case_demo_03: 驗證響應頭是否正確"] = content_type === "application/json; encoding=utf-8"
//新版本
var content_type = pm.response.headers  //獲取響應頭
tests["case_demo_003: 驗證響應頭是否正確 "+content_type] = true// 獲取響應時間
//舊版本
var time = responseTime
tests["case_demo_04: 驗證響應時間是否正確 "+ time] = true
tests["case_demo_004: 驗證響應時間是否在100-500ms以內返回"] = time >=100 && time<=500
//新版本
var time = pm.response.responseTime
tests["case_demo_00004: 驗證響應時間是否正確 "+ time] = true//獲取響應正文 text
//舊版本
var body = responseBody
tests['case_demo_05: 驗證響應正文是否正確 '+ body] = true
tests["case_demo_005: 驗證響應正文是否包含 7200"] = body.has("7200")  //判斷是否包含
//新版本  
var body = pm.response.text()
tests['case_demo_0005: 驗證響應正文是否正確 '+ body] = true
var title = body.match(new RegExp('<title>(.+?)</title>'))[1];  //利用正則表達式截取部分響應正文
tests["case_demo_00005: 驗證響應正文中的title是否包含 貓_百度搜索"] = title === "貓_百度搜索"//json格式響應正文  通過json視圖更清晰
//舊版本
var jsondata = JSON.parse(responseBody)  //把響應正文轉化為json對象
var expires_in = jsondata.expires_in  //json對象名.鍵名
tests["case_demo_06: 驗證json格式響應正文是否正確 "] = expires_in === 7200
//新版本
var jsondata = pm.response.json()  //把響應正文轉化為json對象
var expires_in = jsondata.expires_in  //json對象名.鍵名
tests["case_demo_006: 驗證json格式響應正文是否正確 "] = expires_in === 7200

復制代碼

?斷言的展示結果如下圖:

?語法二:?Chai.js斷言庫,可以通過右側頁簽點擊生成代碼(新版本寫法-推薦)

chai.js斷言介紹:

1、是一套TDD(測試驅動開發)/BDD(行為驅動開發)的斷言庫
2、包含有3個斷言庫支持BDD風格的expect/should和TDD風格的assert
3、可以高效的和任何js測試框架搭配使用(支持在postman中應用)

?斷言語法二視圖:

?在tests頁簽中編寫語法如下圖:

復制代碼

//新版本寫法------
pm.test("測試用例標題", function () {pm.expect(true).to.be.true;    //chai.js斷言編寫處  
});pm.test("case_demo_01 *****", function () {pm.expect(2<5 && 3<6).to.be.true         //判斷是否為true
});pm.test("case_demo_02 *****", function () {pm.expect("everything").to.be.ok         //判斷是否為真值  非空、非0 即為真
});pm.test("case_demo_03 *****", function () {pm.expect("hello").to.equal("hello")    //判斷是否相等
});pm.test("case_demo_04 *****", function () {pm.expect({list:"aaa"}).to.eql({list:"aaa"})//判斷是否深度相等
});pm.test("case_demo_05 *****", function () {pm.expect("foobar").to.have.string("bar")    //判斷是否包含字符串
});pm.test("case_demo_06 *****", function () {pm.expect("foobar").to.match(/^foo/)   //判斷是否包含,支持正則表達式
});//實例------
//響應行的狀態碼
pm.test("case_demo_07 *****", function () {pm.expect(pm.response.code === 200).to.be.true   //判斷響應狀態碼是否為200
});
//響應行的信息
pm.test("case_demo_08 *****", function () {pm.expect(pm.response.status === "OK").to.be.true   //判斷響應狀態信息是否為OK
});
//響應正文 text
pm.test("case_demo_09 *****", function () {pm.expect(pm.response.text()).to.have.string("貓_百度搜索")  //判斷響應正文中是否包含貓_百度搜索
});
//響應正文 json
pm.test("case_demo_10 *****", function () {var jsonData = pm.response.json();pm.expect(jsonData.expires_in).to.eql(7200);  //判斷json響應正文中是否有7200
});

復制代碼

斷言的展示結果如下圖:

???自動化測試相關教程推薦:

2023最新自動化測試自學教程新手小白26天入門最詳細教程,目前已有300多人通過學習這套教程入職大廠!!_嗶哩嗶哩_bilibili

2023最新合集Python自動化測試開發框架【全棧/實戰/教程】合集精華,學完年薪40W+_嗶哩嗶哩_bilibili

測試開發相關教程推薦

2023全網最牛,字節測試開發大佬現場教學,從零開始教你成為年薪百萬的測試開發工程師_嗶哩嗶哩_bilibili

postman/jmeter/fiddler測試工具類教程推薦

講的最詳細JMeter接口測試/接口自動化測試項目實戰合集教程,學jmeter接口測試一套教程就夠了!!_嗶哩嗶哩_bilibili

2023自學fiddler抓包,請一定要看完【如何1天學會fiddler抓包】的全網最詳細視頻教程!!_嗶哩嗶哩_bilibili

2023全網封神,B站講的最詳細的Postman接口測試實戰教學,小白都能學會_嗶哩嗶哩_bilibili

??總結:

?光學理論是沒用的,要學會跟著一起敲,要動手實操,才能將自己的所學運用到實際當中去,這時候可以搞點實戰案例來學習。

如果對你有幫助的話,點個贊收個藏,給作者一個鼓勵。也方便你下次能夠快速查找。

如有不懂還要咨詢下方小卡片,博主也希望和志同道合的測試人員一起學習進步

在適當的年齡,選擇適當的崗位,盡量去發揮好自己的優勢。

我的自動化測試開發之路,一路走來都離不每個階段的計劃,因為自己喜歡規劃和總結,

測試開發視頻教程、學習筆記領取傳送門!!

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/208283.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/208283.shtml
英文地址,請注明出處:http://en.pswp.cn/news/208283.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

眼花繚亂的ADN/ADX/DSP/DMP/SSP和他們的關系鏈

做過互聯網廣告尤其是程序化廣告的同學都遇到過以下這些名詞&#xff0c;或許正被他們折磨的焦頭爛額&#xff0c;這篇文章&#xff0c;我們就來說說這些概念的含義及他們之間的關系鏈。 ADN&#xff1a;AD Network——廣告網絡或廣告聯盟。連接廣告主和媒體的中間商。 ADX&…

stm32串口編程實例-實現數據的收發功能

大家好&#xff0c;今天給大家介紹stm32串口編程實例&#xff0c;文章末尾附有分享大家一個資料包&#xff0c;差不多150多G。里面學習內容、面經、項目都比較新也比較全&#xff01;可進群免費領取。 串口是USART(通用同步/異步收發器)的俗稱。 實際上&#xff0c;串行總線并不…

2023年8月8日 Go生態洞察:Go 1.21 版本發布探索

&#x1f337;&#x1f341; 博主貓頭虎&#xff08;&#x1f405;&#x1f43e;&#xff09;帶您 Go to New World?&#x1f341; &#x1f984; 博客首頁——&#x1f405;&#x1f43e;貓頭虎的博客&#x1f390; &#x1f433; 《面試題大全專欄》 &#x1f995; 文章圖文…

中小企業都在用哪些開源項目管理工具?分享15款

推薦15個優秀的開源項目管理工具&#xff0c;比如&#xff1a;ProjectLibre、OpenProject、ERPNext、Redmine、禪道、Tuleap、Restyaboard等。 項目經理面臨各種復雜任務&#xff0c;包括追蹤任務的進度、評估交付風險和管理整體工作量。為了順利達成目標&#xff0c;一款靠譜的…

ALLEGRO PCB 如何設置增加的過孔

Allegro添加過孔 1、首先建立焊盤&#xff08;熱風焊盤&#xff09; Via20x10mil(tr30x45x12mil_45) 2、設置過孔的焊盤 Setup-->Constraints&#xff08;約束&#xff09;-->Physical 彈出以下對話框Allegro Constraint Manager 可以通過右鍵點擊PC S&#xff08;…

ArchLinux下載鏈接

LINUX花樣太多&#xff0c;不得不跟著別人要求。 Arch Linux - Downloads Index of /archlinux/iso/2023.12.01/

學習IO的第四天

作業 : 使用兩個子進程完成兩個文件的拷貝&#xff0c;子進程1拷貝前一半內容&#xff0c;子進程2拷貝后一般內容&#xff0c;父進程用于回收兩個子進程的資源 #include <head.h>int main(int argc, const char *argv[]) {int rd -1;if((rdopen("./01_test.c&quo…

零基礎如何入門HarmonyOS開發?

HarmonyOS鴻蒙應用開發是當前非常熱門的一個領域&#xff0c;許多人都想入門學習這個技術。但是&#xff0c;對于零基礎的人來說&#xff0c;如何入門確實是一個問題。下面&#xff0c;我將從以下幾個方面來介紹如何零基礎入門HarmonyOS鴻蒙應用開發學習。 一、了解HarmonyOS鴻…

[JSMSA_CTF] 2023年12月練習題 pwn

一開始沒給附件&#xff0c;還以為是3個盲pwn結果&#xff0c;pwn了一晚上沒出來&#xff0c;今天看已經有附件了。 pwn1 在init_0里使用mallopt(1,0) 設置global_max_fast0 任何塊釋放都會進入unsort在free函數里沒有清理指針&#xff0c;有UAF將v6:0x100清0&#xff0c;便于…

甘草書店:#10 2023年11月24日 星期五 「麥田創業分享2—世界奇奇怪怪,請保持可可愛愛」

今日繼續分享麥田創業經驗。 如果你問我&#xff0c;創業過程中是否想過放棄。那么答案是&#xff0c;有那么一次。 那時想要放棄的原因并不是辛苦沒有回報&#xff0c;或是資金短缺&#xff0c;而是沒能理解“異見者”。 其實事情非常簡單&#xff0c;現在反觀那時的自己&a…

實例解析關于兔鮮登錄tab欄切換案例詳細講解!

文章目錄 文章目錄 效果圖展示 整體制作的一個思路 代碼展示 技術細節 小結 效果圖展示 點擊賬戶登錄顯示登錄的模塊&#xff0c;點擊二維碼登錄顯示二維碼的模塊 整體制作的一個思路 點擊哪個模塊哪個顯示&#xff0c;另外一個模塊讓它隱藏即可&#xff01; 代碼展示 <!…

好萊塢明星識別

一、前期工作 1. 設置GPU from tensorflow import keras from tensorflow.keras import layers,models import os, PIL, pathlib import matplotlib.pyplot as plt import tensorflow as tfgpus tf.config.list_physical_devices("GPU")if gpus:gpu0 …

動態規劃——完全背包問題(公式推導,組合、排列)

本文章是對于完全背包 一些題型(如題目所示&#xff0c;組合、排列和最小值類型)的總結和理解&#xff0c;依次記錄一下&#xff0c;方便回顧與復習。 本文章是基于個人所總結 實現的&#xff0c;但在其中遇到了一些疑惑與困難&#xff0c;所以總結一篇與完全背包相關的問題。 …

Spring基于注解開發

Component的使用 基本Bean注解&#xff0c;主要是使用注解的方式替代原有的xml的<bean>標簽及其標簽屬性的配置&#xff0c;使用Component注解替代<bean>標簽中的id以及class屬性&#xff0c;而對于是否延遲加載或是Bean的作用域&#xff0c;則是其他注解 xml配置…

IntelliJ IDEA 的 HTTP 客戶端的高級用法

本心、輸入輸出、結果 文章目錄 IntelliJ IDEA 的 HTTP 客戶端的高級用法前言HTTP 請求對 gRPC 請求的支持對 GraphQL 和 WebSocket 請求的支持環境文件OpenAPI 補全用于持續集成的 HTTP 客戶端 CLI花有重開日,人無再少年實踐是檢驗真理的唯一標準IntelliJ IDEA 的 HTTP 客戶端…

keepalived 高可用主備

實驗采用兩臺centos9 nginxkeepalived 一共兩臺&#xff0c;進行主備切換 主服務器 192.168.100.105 備用 192.168.100.106 虛擬ip 192.168.100.200 安裝 dnf install vim wget curl vim net-tools nginx keepalivedUndefined nginx 配置需要更改為虛擬ip server {listen …

四招打造完美分層自動化測試框架,讓測試更高效!

寫在前面 我們剛開始做自動化測試&#xff0c;可能寫的代碼都是基于原生寫的代碼&#xff0c;看起來特別不美觀&#xff0c;而且感覺特別生硬。 來看下面一段代碼&#xff1a; 具體表現如下&#xff1a; driver對象在測試類中顯示 定位元素的value值在測試類中顯示 定位元素…

Navicat 技術指引 | 適用于 GaussDB 分布式的用戶/權限功能

Navicat Premium&#xff08;16.3.3 Windows 版或以上&#xff09;正式支持 GaussDB 分布式數據庫。GaussDB 分布式模式更適合對系統可用性和數據處理能力要求較高的場景。Navicat 工具不僅提供可視化數據查看和編輯功能&#xff0c;還提供強大的高階功能&#xff08;如模型、結…

干貨:軟文推廣中的關鍵詞類別有哪些?

軟文推廣如果想要增加文案曝光率&#xff0c;seo是其主要的傳播方式之一&#xff0c;因而好的關鍵詞十分重要&#xff0c;這里的關鍵詞指得是針對搜索引擎而言&#xff0c;由用戶輸入搜索引擎框中的提示性文字&#xff0c;只要關鍵詞設置得好&#xff0c;軟文就能通過搜索引擎精…

因為 postman環境變量全局變量設置好兄弟被公司優化了!

postman環境變量、全局變量設置 在公司中&#xff0c;一般會存在開發環境、測試環境、線上環境等&#xff0c;如果需要在不 同的環境下切換做接口測試&#xff0c;顯然我們需要把所有接口的域名進行修改&#xff0c;如果接 口測試用例較多&#xff0c;那么修改會非常費力&…