這樣寫postman實現參數化,阿里p8都直呼牛逼

什么時候會用到參數化

比如:一個模塊要用多組不同數據進行測試? == 驗證業務的正確性

Login模塊:正確的用戶名,密碼 ===成功;錯誤的用戶名,正確的密碼 === 失敗

postman實現參數化

在實際的接口測試中,部分參數每次發送請求時都要唯一(比如注冊), 這時可采用postman把測試數據進行參數化處理

postman設置參數的形式主要 有三種:

  • 內建變量實現
  • Pre-request Script頁簽中使用代碼實現 (推薦)
  • 外部文件的方式實現;如csv文件/json格式文件

一、內建變量實現

Postman有以下三種內建變量,適合一次性使用;缺點:內鍵變量不能做精確對比

{{$guid}}:生成GUID;如下圖:

{{$timestamp}}:當前時間戳;如下圖

可通過在線時間戳轉換工具查看時間:https://tool.lu/timestamp/

{{$randomInt}}:0-1000的隨機整數

?二、Pre-request Script頁簽中使用代碼實現(推薦)

Pre-request Script為執行接口請求之前要做的操作,而tests是執行完請求要 做的操作。內建變量一般放在Request里,我們也可以用代碼在Pre-request Script中實現,用代碼實現的好處是可以復用。

Pre-request Script 與test 一樣 支持javascript語法

?在Pre-request Script中實現的幾種參數化;如下圖

復制代碼

//獲取當前時間戳 毫秒
var now_time = Date.now()
pm.globals.set("now_time",now_time)//guid實現
const guid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'
.replace(/x/g, () => (Math.floor(Math.random() * 16)).toString(16))
.replace(/y/g, () => (Math.floor(Math.random() * 4 + 8)).toString(16));
pm.globals.set("guid_value",guid)//隨機整數實現
const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + 
min
pm.globals.set("randomInt_num",randomInt(8,15))//從多個選項中選擇實現
const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + 
min
const getRandomValue = list => list[randomInt(0, list.length - 1)];
const charsInName = ['王','李','張']
pm.globals.set("people_name",getRandomValue(charsInName))//隨機手機號實現
const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + 
min
var mobile_num = `18${randomInt(100000000, 999999999)}`;
pm.globals.set("mobile_num",mobile_num)//同步等待實現:等待5秒后開始執行
const sleep = (milliseconds) => {
const start = Date.now();
while (Date.now() <= start + milliseconds) {}
}
sleep(5000)

復制代碼

實戰示例:通過Pre-request Script編寫代碼可以在隨機參數中做斷言的精確比對

1、在Pre-request Script中編寫代碼

?2、在請求中引用變量;{{變量名}}

?3、在tests中做斷言,驗證實際結果和預期結果是否一致

?4、查看執行結果

三、外部文件方式實現參數化

在postman中,除了上述兩種方法實現參數化,還可以利用外部數據文件 (支持csv文件和包含json格式文本的數據)。外部數據文件目前是通過Runner 頁簽可以進行導入。

csv文件格式舉例:

csv文件要在Collection Runner中工作,第一行必須是在request中要使用的 變量名,每一行是一條用例,并表示一次迭代。

1、先準備csv文件,編碼是UTF-8;如上圖

2、在postman中引用變量名,如下圖中的百度搜索中wd的參數引入了{{search_word}},tests頁簽中做斷言引用了data.expected_result

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

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

?3、點擊Runner按鈕,勾選需執行的請求,在設置循環次數,導入csv文件,點擊run執行;如下圖

?4、查看執行結果

json文件你需要確保你的文件有鍵/值對數組。數組中的每個元素是鍵值對對 象,代表一次迭代。key作為request中要使用的變量名,value作為key的取值。

json文件實現參數化步驟:

1、準備要使用的json格式測試數據文件;

?2、在postman腳本中,HTTP requests中使用{{ key }}去引用,在script中使用 data. key 或者 data[“key”] 去引用;

?3、打開Runner窗口,點擊Data旁邊的Select File按鈕,導入jsondata參數化文件; 點擊Data File Type類型選擇application/json后,點擊Preview按鈕,檢查數據正確

?4、查看執行結果

??總結:

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

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

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

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

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

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

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

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

相關文章

你的關聯申請已發起,請等待企業微信的管理員確認你的申請

微信支付對接時&#xff0c;需要申請AppID,具體在下面的位置&#xff1a; 關聯AppID&#xff0c;發起申請時&#xff0c;會提示這么一句話&#xff1a; 此時需要登錄企業微信網頁版&#xff0c;使用注冊人的企業微信掃碼登錄進去&#xff0c;然后按照下面的步驟操作即可。 點擊…

iEnglish全國ETP大賽:教育游戲助力英語習得

“seesaw,abacus,sword,feather,frog,lion,mouse……”11月18日,經過3局的激烈較量,“以過客之名隊”的胡玲、黃長翔、林家慷率先晉級“玩轉英語,用iEnglish”第三屆全國ETP大賽的16強,在過去的周末中,還有TIK徘徊者隊、不負昭華隊、溫柔殺戮者隊先后晉級。據悉,根據活動規則,在…

電腦內存升級

ddr代兼容 自從DDR內存時代開啟之后&#xff0c;只要滿足內存的插槽規格相同(DDR3或DDR4或DDR5即為內存規格)這一條件&#xff0c;不同品牌、不同頻率以及不同容量的茶品都可以一起使用&#xff0c;除了品牌和容量的影響之外&#xff0c;不同頻率的搭配可能會造成性能方面的影…

面試官:什么是三色標記

程序員的公眾號&#xff1a;源1024&#xff0c;獲取更多資料&#xff0c;無加密無套路&#xff01; 最近整理了一波電子書籍資料&#xff0c;包含《Effective Java中文版 第2版》《深入JAVA虛擬機》&#xff0c;《重構改善既有代碼設計》&#xff0c;《MySQL高性能-第3版》&…

git提交時會將target也提交

有時候大家在提交git時發現會將編譯文件target也提交上去&#xff0c;這種情況有以下幾種情況 情況1&#xff1a;項目沒有設置.gitignore 情況2&#xff1a;設置了.gitignore但是依然會提交。 第一種&#xff1a;添加.gitignore&#xff0c;并在文件中添加需要忽略的東西。 …

redis分布式鎖的學習記錄

核心性質 獨占性&#xff1a;對于同一把鎖&#xff0c;同一時刻只能被一個加鎖方獨占 健壯性&#xff1a;不能產生死鎖。如果有一個因為宕機無法主動解鎖&#xff0c;鎖也應該被正常加載 對稱性&#xff1a;加成和解鎖的使用方必須為同一個身份&#xff0c;不允許被非方釋放 高…

HCIA-實驗命令基礎學習:

視頻學習&#xff1a; 第一部分&#xff1a;基礎學習。 19——子網掩碼。 27——防火墻配置&#xff1a; 32——企業級路由器配置&#xff1a; 基礎實驗完成&#xff1a;&#xff08;完成以下目錄對應的實驗&#xff0c;第一部分基礎實驗就完成。&#xff09; 方法&#xff…

C //習題 8.13 寫一個用矩形法求定積分的通用函數,分別求

C程序設計 &#xff08;第四版&#xff09; 譚浩強 習題8.13 習題 8.13 寫一個用矩形法求定積分的通用函數&#xff0c;分別求 ∫ 0 1 s i n x d x &#xff0c; ∫ 0 1 c o s x d x &#xff0c; ∫ 0 1 e x d x \int_{0}^{1}sinx\ dx&#xff0c;\ \ \int_{0}^{1}cosx\ …

ILI9225 TFT顯示屏16位并口方式驅動

所用屏及資料如后圖&#xff1a; ILI9225&#xff0c;176*220&#xff0c;8位或16位并口屏&#xff0c;IM0接GND&#xff0c;電源及背光接3.3v 主控&#xff1a;CH32V307驅動&#xff08;庫文件和STM32基本一樣&#xff09; 一、源碼 ILI9225.c #include "ILI9225.h&quo…

設計模式(二)-創建者模式(4)-原型模式

一、為何需要原型模式&#xff08;Prototype Pattern&#xff09;? 在軟件設計中&#xff0c;我們會遇到到這樣的情況&#xff1a;對原對象進行拷貝一個新的副本。想要實現這樣的邏輯&#xff0c;有一種笨方法就是對原對象里的所有變量進行逐一賦值。但是這樣的做法會導致代碼…

【SpringCloud】認識微服務、服務拆分以及遠程調用

SpringCloud 1.認識微服務 1.1單體架構 單體架構&#xff1a;將業務的所有功能集中在一個項目中開發&#xff0c;打成一個包部署 單體架構的優缺點&#xff1a; **優點&#xff1a;**架構簡單&#xff0c;部署成本低 **缺點&#xff1a;**耦合度高&#xff08;維護困難&…

【C++】郭老二博文之:C++目錄

1、POCO 【POCO】POCO學習總結&#xff08;一&#xff09;–下載與編譯 【POCO】POCO學習總結&#xff08;二&#xff09;——配置選擇 【POCO】POCO學習總結&#xff08;三&#xff09;——交叉編譯 2、C11 2.1 STL算法 【C】C11 STL算法(一)&#xff1a;非修改序列操作&a…

筆記59:序列到序列學習Seq2seq

本地筆記地址&#xff1a;D:\work_file\&#xff08;4&#xff09;DeepLearning_Learning\03_個人筆記\3.循環神經網絡\第9章&#xff1a;動手學深度學習~現代循環神經網絡 a a a a a a a a a a a a a a a

C++ Day04 this指針,友元函數,重載

this指針 概念 誰調用 this 所在的函數 ,this 就存儲誰的地址 特點 1, 在當前類的非靜態成員函數中調用本類非靜態成員時 , 默認有 this 關鍵字 2, 靜態成員函數 , 沒有 this 指針。 示例 #include <iostream> #include <cstring> using namespace std; class S…

前后端分離項目跨域請求的問題與解決辦法

目錄 一、為什么會存在跨域請求&#xff1f; 二、跨域請求的流程&#xff1f; 三、什么情況下會觸發CROS機制&#xff1f; 四、如何解決跨域請求導致的問題&#xff1f; 一、為什么會存在跨域請求&#xff1f; 跨域請求是因為瀏覽器的同源策略引起的。同源策略是瀏覽器的一種…

算法刷題-動態規劃2

算法刷題-動態規劃2 珠寶的最高價值下降路徑最小和 珠寶的最高價值 題目 大佬思路 多開一行使得代碼更加的簡潔 移動到右側和下側 dp[ i ][ j ]有兩種情況&#xff1a; 第一種是從上面來的禮物最大價值&#xff1a;dp[ i ][ j ] dp[ i - 1 ][ j ] g[ i ][ j ] 第二種是從左…

10.10-11 科研記錄 一些多模態工作的相關思考

論文出發點很簡單&#xff0c;第一&#xff0c;就是想要去除文本的冗余數據&#xff0c;有多篇文章也提到了&#xff0c;冗余文本影響對下游任務的性能&#xff0c;大量無關的文本輸入到大模型也會影響大模型的性能&#xff0c;本質也很好理解&#xff0c;就是盡可能去除與任務…

握住音樂的法寶 - 簡譜

簡譜是音樂學習中至關重要的記譜法。除了簡譜&#xff0c;還有吉他和鋼琴的五線譜&#xff0c;以及我最喜歡的古琴減字譜等其他記譜方式。如果你對音樂感興趣&#xff0c;一起學習吧&#xff0c;我不允許你是一個文盲。 一、調拍號 “1C 4/4”即為調拍號&#xff0c;調拍號分…

opencv-直方圖均衡化

直方圖均衡化是一種用于增強圖像對比度的圖像處理技術。它通過調整圖像的灰度級別分布&#xff0c;使得圖像中各個灰度級別的像素分布更均勻&#xff0c;從而提高圖像的對比度。 在OpenCV中&#xff0c;你可以使用cv2.equalizeHist()函數來進行直方圖均衡化。 以下是一個簡單…