一個 postman實現參數化讓我丟掉了一份20k的offer

什么時候會用到參數化

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

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

?

?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、查看執行結果

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

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/207785.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/207785.shtml
英文地址,請注明出處:http://en.pswp.cn/news/207785.shtml

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

相關文章

C++ Boost提供的六種進程間通信技術介紹

作者:令狐掌門 技術交流QQ群:675120140 博客地址:https://mingshiqiang.blog.csdn.net/ 文章目錄 一、共享內存(Shared Memory)1.1 共享內存的原理創建共享內存段映射到進程地址空間進程間的數據訪問同步訪問生命周期管理安全性和資源限制實際應用1.2 boost共享內存代碼演…

Ubuntu22.04安裝和卸載軟件的命令行

一、安裝 sudo apt install xxx 二、卸載 sudo apt remove xxx 三、卸載依賴包(可選) 第二步軟件卸載之后&#xff0c;有一些依賴包沒有被卸載。可以使用sudo apt autoremove xxx來卸載。如果不卸載應該也沒什么影響

Andorid sudio 換行方法

1.遇到的問題&#xff0c;二維碼內容要換行 String text "成績&#xff1a;1000 \n姓名&#xff1a;張三 \n姓名&#xff1a;張三 \n姓名&#xff1a;張三 \n姓名&#xff1a;張三 \n姓名&#xff1a;張三 \n姓名&#xff1a;張三 \n姓名&#xff1a;張三 \n姓名&#xff…

阿里云服務器2核8G/4核16G/8核32G配置選擇經濟型、通用算力型、通用型哪個好?

2核8G/4核16G/8核32G配置的阿里云服務器在阿里云活動中目前有經濟型e、通用算力型u1、通用型c7和通用型g8y四種實例可選&#xff0c;雖然配置相同&#xff0c;但是這些實例規格之間的價格差別是很大的&#xff0c;以2核8G配置為例&#xff0c;活動價格最便宜的經濟型e實例2核8G…

2023亞太五岳杯量子計算挑戰賽數學建模思路代碼模型論文

2023五岳杯數學建模思路&#xff1a;比賽開始后第一時間更新&#xff0c;獲取見文末名片 今年&#xff0c;APMCM亞太地區大學生數學建模競賽組委會正式和玻色量子、中國移動云能力中心等多家單位達成合作。 開展APMCM校企合作高校巡回學術講座活動&#xff0c;為企業、高校搭…

LeetCode435. Non-overlapping Intervals

文章目錄 一、題目二、題解 一、題目 Given an array of intervals intervals where intervals[i] [starti, endi], return the minimum number of intervals you need to remove to make the rest of the intervals non-overlapping. Example 1: Input: intervals [[1,2]…

vue router之route和router的區別

1、區別 用一句話來概括這兩個區別就是route是用來獲取路由信息的&#xff0c;router是用來操作路由的。 2、route 2.1什么是route&#xff1a; route是一個路由對象&#xff08;route object&#xff09;表示當前激活的路由的狀態信息&#xff0c;它包含了當前URL解析得到的…

mysql存json數據時的查詢辦法

很多時候mysql的一列當中存的是json格式的數據&#xff0c;這時候如果要查詢某個key對應的值的時候要如何查詢呢&#xff0c;這里記錄一種查詢方法&#xff1a; json列的值&#xff1a; {“InventoryMainTypeCode”: 1, “InventoryMainTypeName”: “GOOD”} 現在要查詢Inve…

win10 筆記本卡頓優化

Windows SysMain 服務是 Windows 操作系統中的一個關鍵組件&#xff0c;它的作用是啟用系統的 SuperFetch 功能。SuperFetch 旨在改善系統的性能&#xff0c;通過預加載常用的應用程序和文件到內存中&#xff0c;以加速它們的啟動和響應時間。SysMain 服務負責管理 SuperFetch …

Python并發-線程和進程

一、線程和進程對應的問題 **1.進程&#xff1a;**CPU密集型也叫計算密集型&#xff0c;指的是系統的硬盤、內存性能相對CPU要好很多&#xff0c;此時&#xff0c;系統運作大部分的狀況是CPU Loading 100%&#xff0c;CPU要讀/寫I/O(硬盤/內存)&#xff0c;I/O在很短的時間就可…

C語言之函數

目錄 main函數和庫函數 什么是函數 函數定義 函數頭&#xff08;function header&#xff09; 1.返回類型&#xff08;return type&#xff09; 2.函數名&#xff08;function name&#xff09; 3.形參聲明&#xff08;parameter type list&#xff09; 函數體&#xff…

mybatisplus手動獲取數據源執行非主數據庫事務

mybatisplus手動獲取數據源執行非主數據庫事務 class A {// 事務管理器Resourceprivate DataSourceTransactionManager dataSourceTransactionManager;Autowiredprivate DataSource dataSource; // 最終是com.baomidou.dynamic.datasource.DynamicRoutingDataSource類型public…

通過靜態HTTP實現負載均衡

在當今的互聯網環境中&#xff0c;隨著用戶數量的不斷增加和業務需求的不斷擴大&#xff0c;單臺服務器往往無法承受所有的訪問壓力。為了確保網站的可用性和性能&#xff0c;負載均衡成為了一種常見的解決方案。本文將探討如何通過靜態HTTP實現負載均衡&#xff0c;以提升網站…

認識系統服務daemons

什么是daemon與服務&#xff08;service) 常駐內存的是進程&#xff0c;可以提供一些系統或網絡功能&#xff0c;這就是服務。實現service的程序稱為daemon。也就是說要想提供某種服務&#xff0c;daemon實在后臺運行的。 daemon的分類&#xff1a; 1&#xff09;可獨立啟動…

【CSP】202209-1_如此編碼Python實現

文章目錄 [toc]試題編號試題名稱時間限制內存限制題目背景題目描述輸入格式輸出格式樣例1輸入樣例1輸出樣例2輸入樣例2輸出樣例3輸入樣例3輸出樣例3解釋子任務提示Python實現 試題編號 202209-1 試題名稱 如此編碼 時間限制 1.0s 內存限制 512.0MB 題目背景 某次測驗后&#x…

【Angular開發】2023年促進您開發的最佳Angular庫

如果你是一名開發人員&#xff0c;你可以理解平臺的重要性&#xff0c;它可以加快開發過程&#xff0c;顯著減少編碼時間和工作量。 根據StackOverflow開發者2021年的調查&#xff0c;Angular是其中一個令人驚嘆的平臺&#xff0c;它一直贏得人們的喜愛&#xff0c;并獲得了全…

【vtkWidgetRepresentation】第六期 vtkFinitePlaneRepresentation

很高興在雪易的CSDN遇見你 &#xff0c;給你糖糖 歡迎大家加入雪易社區-CSDN社區云 前言 本文分享VTK中的平面Plane表示方法&#xff0c;希望對各位小伙伴有所幫助&#xff01; 感謝各位小伙伴的點贊關注&#xff0c;小易會繼續努力分享&#xff0c;一起進步&#xff01; …

機器人阻抗控制直觀(圖示理解)與控制框架/架構

在剛性碰撞下&#xff0c;機器人的阻抗調節可以使其更好地適應外部環境。具體來說&#xff0c;通過建立力與位移之間的關系&#xff0c;并改變阻抗參數&#xff0c;可以控制機器人對外部力的響應。 在具體實現上&#xff0c;可以采用基于位置的阻抗控制或基于力的阻抗控制。基于…

【Java 基礎】26 枚舉

文章目錄 1. 什么是枚舉2. 定義3. 使用1&#xff09;常量2&#xff09;遍歷3&#xff09;switch 4. 屬性和方法1&#xff09;屬性2&#xff09;方法 5. 實現原理6. 使用場景總結 1. 什么是枚舉 枚舉是列出某些有窮序列集的所有成員的程序&#xff0c;或者是一種特定類型對象的計…

Windows下使用CMD修改本地IP

在網絡適配器界面查看當前網線連接的哪個網口&#xff0c;我當前連的是 以太網 這個名字的&#xff1a; 在windows下使用管理員權限打開CMD命令工具&#xff0c;輸入如下命令(如我想本地ip改成192.168.2.4)&#xff1a; netsh interface ip set address "以太網" st…