如何使用postman做接口自動化測試?

🍅 點擊文末小卡片,免費獲取軟件測試全套資料,資料在手,漲薪更快??

本文適合已經掌握 Postman 基本用法的讀者,即對接口相關概念有一定了解、已經會使用Postman 進行模擬請求等基本操作。
工作環境與版本:

  • Window 7(64位)
  • Postman (Chrome App v5.5.3)
    P.S. 不同版本頁面 UI 和部分功能位置會有點不同,不過影響不大。
    首先我們來思考一下,如果要達到自動化接口測試效果,在基本的模擬請求上還需要做哪些呢?
    我粗略概括為 3 個問題(歡迎在評論區留言更多補充建議):
  1. 如何判斷接口是否請求成功?
  2. 如何進行接口批量、定期測試?
  3. 如何處理依賴接口問題(比如商品下單的接口必須要求先登錄)?
    所以,接下來就主要分為 3 個部分,介紹如何解決這 3 個問題。
    首先,既然是自動化測試,那么我們肯定需要通過工具 Postman 或者代碼,幫我們直接判斷結果是否符合預期。那么在接口測試上,大體就兩個思路:
  4. 判斷請求返回的 code 是否符合預期

判斷請求返回的內容中是否包含預期的內容(關鍵字)
接下來我們看看如何利用 Postman 來解決上述的問題:
在 Postman 中相關的功能在非常顯眼的地方,Tests 功能的使用需要我們有一定的編程語言基礎,目前支持的腳本語言即為 JavaScript 。但比較好的一點是,我們不需要再去考慮上下文問題以及運行環境的問題 ,也就是說我們只需要在這邊完成結果邏輯判斷的代碼塊即可。
而 Postman 還為我們提供了一些常用的代碼模板,在 Tests 面板右邊的 SNIPPETS 功能區中,所以對 JavaScript 不大了解問題也不大。代碼編寫相關將在下文進行具體介紹。

先看上圖的代碼部分,我們可以發現 responseCode 、 responseBody 和 tests 三個變量(可直接使用) :

  • responseCode :包含請求的返回的狀態信息(如:code)。
  • responseBody:為接口請求放回的數據內容(類型為字符串)。
  • tests :為鍵值對形式,用于表示我們的測試結果是成功與否,最終展示在 Test Results 中。
  • key :(如:code 200)我們可以用來當做結果的一個描述。
  • value:其值為布爾型,ture 表示測試通過, false 表示測試失敗。
    所以上述代碼應該不難理解了,而有了返回結果的數據以及表示結果成功與否的方式,那么我們“接口結果判斷”的問題也就基本解決了。
    另外還有幾個比較常用的:
  • responseTime :請求所耗時長
  • postman :可以做的比較多,比如
  • 獲取返回數據的頭部信息:
    postman.getResponseHeader("")

設置全局變量:
postman.setGlobalVariable("variable_key", "variable_value");
更多功能可以查看官方文檔。
Postman 在 SNIPPETS 功能區中為我們提供的代碼模板已經能解決大部分情況了,以下先挑幾個跟結果判斷相關的進行講解:
Status code : Code is 200
Response body: Contains string
Response body: is equal to string
Response body: JSON value check
Response time is less than 200ms
以上介紹的這些基本已經足夠完成對單一接口的測試了,但我們知道如果沒有批量、定時任務, 那么這些都將毫無意義,所以繼續 …
想要進行接口的批量測試、管理,那么我們需要將待測試的接口全部都保存到同一個集合(Collections)中,你可以認為就是保存到同一個文件夾中。先看看 Postman 中的操作步驟:

通過以上步驟,我們得到一個待測的接口集合,為了簡化情況,我這邊每個接口成功與否的條件都是用 code 是否為 200 來判斷:
以上準備就緒后,我們就可以開始批量運行接口進行測試了:

點擊Run 后,會新打開一個頁面:

  • Environment :用于切換接口運行的環境,這里先不管,后面再講
  • Iteration :用于設置接口一共要運行的次數。
  • Delay : 設置每次運行接口之間的時間間隔,單位為毫秒。

Data File : 上傳測試數據文件 (下文單獨講)
我們已經了解了,如何讓多個接口循環運行多次,但是現在有個問題,按目前這個步驟,每次運行時接口的參數都是一樣的,那么就算我們運行個100次、1000次意義也不大。
先看看我們寫好的一個登錄功能的接口:

現在登錄的賬號和密碼參數都是寫死的,也就是不過我們執行多少次,都是拿這個賬號去測試。那么如果想要測試賬號密碼參數使用其它值有沒有異常怎么辦呢?( 想要每次都手動改的可以跳過這部分 /手動滑稽)這里我們先簡單講一下在 Postman 中使用如何“變量”,如下圖:

引用一個變量的語法:{{變量名}}, 圖中可以看到,我們將賬戶和密碼字段的參數值都設置為變量:{{username}} 、{{password}} 。修改完直接點擊運行 (Send) 當然是不行的,因為目前這兩個變量還未被賦值,不過我們可以在 Pre-request Script 面板中進行賦值操作:
Pre-request Script 與 Tests 類似,區別在于:Pre-request Script 中的腳本是在執行請求之前運行,而Tests 中的腳本則是在請求完成之后執行。所以,我們可以在 Pre-request Script 功能區中用腳本先個上面兩個變量進行賦值,如:
但是用 Pre-request Script 進行賦值操作仍然不能解決我們的問題,因為按照這種寫法,不論運行多少次其實都還是用固定(寫死)的數據進行測試。當然既然是腳本語言,也會有更靈活的用法,這邊先不將。
接下來我們講講 Data File , 在運行集合前的這個選項就是用來上傳測試數據(文件)以賦值給相應變量的。我們先以 CSV 格式的測試數據為例:
數據格式類似表格,第一行表示對應的變量名,下面 4 行表示 4 組賬號密碼數據(其中兩組為正確數據) ,我們保存一份內容為上述示例數據后綴名為.csv 的文件后,再次開始測試看看效果,我們選擇運行次數為 4 (對應 4 組測試數據)、選擇對應的 CSV 文件運行后,可以看到我們的結果確實如我們的預期。接口 Request 運行的結果為兩次成功兩次失敗,也就是每一次運行都賦值了不同的賬號密碼的測試數據 (在最新的桌面客戶端版本中可以看到每次具體的請求情況,這邊就不再細說了)。
如果使用 Json 文件的話,那么格式如下:
Postman 提供了一個 Monitors (監視器)功能,支持我們提交一個測試任務,按照設置的定時器進行運行,如每小時測試一次,具體操作如下:

講完接口結果判斷和集合批量測試后,我們再來看看比較復雜的情況,即依賴請求問題,比如我們的購物下訂單接口要求必須先登錄后才可訪問。但大部分依賴問題其實本質上就是一個接口間數據傳遞的問題,比如調用登錄接口后返回一個標識,假設為 token ,那么我們請求下訂單接口時只要一起攜帶 token 參數進行請求即可。所以,問題變為:

  • 保證接口調用順序

將接口A返回的數據傳遞給后續的接口B、C、D
首先,說明一下,接下來說的接口都是默認屬于同一個集合 (Collections) 中的。
還是以我們上文中創建好接口集合為例,如果你有注意我們執行批量測試的結果,就會發現接口的執行順序其實就是按照這邊目錄中的順序(從上到下),即: Request1 -> Request2 -> Request3。

所以有了這個默認的執行順序后,那么我們便可以把需要優先執行的接口放前面即可,比如把“登錄接口”放在第一個。
當然,如果只有默認的一個執行順序的話,通常沒法滿足我們復雜的業務需求,所以 Postman 為我們提供了一個函數:postman.setNextRequest(“填寫你要跳轉的接口名”) ,支持我們跳轉到指定接口繼續執行,舉個例子:
我們在運行完 Request1 接口成功后,不需要再運行 Request2 而是直接跳至 Request3 ,那么我可以在 Request1 接口的 Tests 功能區中執行跳轉代碼,如:

這里需要注意幾點:

  1. postman.setNextRequest() 只在運行集合測試的時候生效,也就是說我們單獨運行 (Send) 接口Request1 時,函數是不起作用的。

  2. 當我們運行集合測試成功從 Request1 -> Request3 后,如果 Request3 后面還有接口,那么后面的接口仍然繼續按默認順序執行,即圖中的接口 Request4 仍會被執行。

  3. 指定的跳轉接口必須屬于同一個集合中。

  4. setNextRequest() 函數不管在 Tests 腳本中何處被調用,它都只在當前腳本最后才被真正執行。比如我們將圖中的第二行與第一行互調后,那么在運行跳轉函數后第二行代碼仍會被執行。
    所以,利用 setNextRequest() 函數,我們便可以按照條件跳過不必要的接口,或者建立我們自己的一個邏輯測試。
    在講數據傳遞前,先聊聊 Postman 中全局變量、環境切換的使用。
    全局變量的概念其實我們在上文中講 Pre-request Script 時有簡單提到,也就是說我們可以通過腳本代碼來設置全局變量,我們可以看看運行上文的腳本后的效果:
    我們可以看到運行后,username 和 password 兩個變量已經被成功保存下來,那么我們在任意接口中便都可以通過變量引用的語法如:{{username}} 來使用它們。
    另外,Postman 不僅支持代碼設置全局變量的方式,它還支持可視化操作:

進入對應界面后,便可直接進行管理:

通常情況下,我們的接口都會分為測試版本和線上版本(或者更多),而他們的區別可能僅是 ULR 不同,那么全局變量便不大合適解決這個問題。
可能你已經注意到,上圖中我已經建有幾個不同環境的參數“集合”了,再看一下:

我在每個環境中都創建了一個 host 參數,如:

當然,我們的環境參數也可以通過腳本的方式來進行設置,函數為:
環境“參數集” 中的參數使用方式和全局變量一致,如圖中 {{host}} ,不同環境的切換見下圖:

掌握以上的預備知識后,我們開始看看如何用 Postman 解決存在依賴關系的接口測試。
我們的接口 Request1 為登錄接口,登錄成功將會返回一個 access_token 字段作為標識(已實現)。那么假設接口 Request3 為一個下訂單的接口,需要攜帶登錄返回的 access_token 才能正常訪問。

  1. 保證 Request1 在 Request3 之前被運行
  2. 將 Request1 返回的 access_token 的值添加到環境變量"參數集"中。
  3. Request3 在請求時引用 access_token 的值
  4. 我們目錄中已保證 Request1 接口優先執行
  5. Request1 中 Tests 的代碼情況:

在接口 Request3 中使用變量 token :

運行集合測試,可以看到我們結果符合我們的預期,Request1 和 Request3 通過測試,Request2 被跳過,Request4 仍被執行。Done…

最后感謝每一個認真閱讀我文章的人,禮尚往來總是要有的,雖然不是什么很值錢的東西,如果你用得到的話可以直接拿走:

這些資料,對于做【軟件測試】的朋友來說應該是最全面最完整的備戰倉庫,這個倉庫也陪伴我走過了最艱難的路程,希望也能幫助到你!凡事要趁早,特別是技術行業,一定要提升技術功底。

?

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

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

相關文章

面試-操作系統

用戶態和內核態的區別 內核態:在內核態下,CPU可以執行所有的指令和訪問所有的硬件資源。 用戶態:在用戶態下,CPU只能執行部分指令集,無法直接訪問硬件資源。 內核態的底層操作主要包括:內存管理、進程管理…

【基礎算法】二分(二分查找 + 二分答案)

文章目錄 一、二分查找1. 【案例】在排序數組中查找元素的第一個和最后一個位置 ?(1) 二分查找的引入(2) 解題細節(important)(3) 代碼示例(4) 【模板】二分查找(5) STL 中的二分查找 2. 牛可樂和封印魔法 ??(1) 解題思路(2) 代碼實現 3. A-B 數對 ?…

多協議物聯網關的方案測試-基于米爾全志T536開發板

本文將介紹基于米爾電子MYD-LT536開發板(米爾基于全志T536開發板)的多協議物聯網關方案的開發測試。 摘自優秀創作者-ALSET 米爾基于全志T536開發板 為了充分的應用該開發板,結合T536處理器的特點,這里進一步的進行軟件開發&…

echarts的還原,下載圖片失效(空白圖片,還原白屏)

echarts的toolbox.feature. restore 和toolbox.feature. saveAsImage 失效 也沒有任何報錯, 只需要修改: // chart.setOption(op); chart.setOption(op,true);

56-Oracle SQL Tuning Advisor(STA)

各位小伙伴,一般都用哪些優化工具,Oracle SQL Tuning Advisor (STA)用的多嗎,Profile就是它的其中1個產物,下一期再弄Profile,STA 的核心功能是自動化診斷高負載SQL的性能瓶頸?(如全表掃描、缺失索引&…

修改element-plus的主題色css變量

提示:本文僅是記錄我修改element-plus等組件庫的css變量, 具體【實現主題色切換看這篇】即可 文章目錄 1.文件劃分2.src/style/index.scss入口文件3.src/style/theme.scss主題色切換維護4.src/style/_color-utils.scss動態生成element-plus的scss變量5.…

Vibe Coding - 進階 Cursor Rules

文章目錄 為什么要配置 .cursorrules使用 .cursorrules 的五大優勢 如何創建與應用 .cursorrules? 基礎步驟🛠 創建方式: 高質量 .cursorrules 文件,應包含以下內容配置示例Java 項目TypeScript React 項目總結 cursorrules 推薦網站 為什么…

騰訊云自動化助手(TAT)技術評估報告

摘要 騰訊云自動化助手(TAT)作為云服務器(CVM)與輕量應用服務器(Lighthouse)的原生運維工具,通過無密碼批量命令執行(Shell/Python/PowerShell)、交互式會話管理及公共命…

【simulink】IEEE5節點系統潮流仿真模型(2機5節點全功能基礎模型)

主要內容 該模型為simulink仿真模型,主要實現的內容如下: 模型是基于 Simulink 搭建的電力系統潮流計算仿真模型,圍繞2 臺發電機、5 個節點的拓撲結構構建,用于電力系統穩態分析,是電力系統研究、教學及工程實踐中…

責任鏈模式詳解

責任鏈模式 場景 顧名思義,責任鏈模式(Chain of Responsibility Pattern)為請求創建了一個接收者對象的鏈。這種模式給予請求的類型,對請求的發送者和接收者進行解耦。這種類型的設計模式屬于行為型模式。 在這種模式中&#x…

Taro 跨端應用性能優化全攻略:從原理到實踐

引言:為什么需要性能優化? 在當今移動互聯網時代,用戶體驗已經成為決定產品成敗的關鍵因素。根據 Google 的研究,頁面加載時間每增加 1 秒,移動端轉化率就會下降 20%。對于使用 Taro 開發的跨端應用來說,性…

Git集成Jenkins通過Pipeline方式實現一鍵部署

Docker方式部署Jenkins 部署自定義Docker網絡 部署Docker網絡的作用: 隔離性便于同一網絡內容器相互通信 # 創建名為jenkins的docker網絡 docker network create --subnet 172.18.0.0/16 --gateway 172.18.0.1 jenkins# 查看docker網絡列表 docker network ls# …

磐基PaaS平臺MongoDB組件SSPL許可證風險與合規性分析(下)

#作者:任少近 3.7.條款六:非源代碼形式分發 官方原文如下: 原文關鍵部分:“You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License.” 解讀:“您不得…

桌面小屏幕實戰課程:DesktopScreen 2 第一個工程

飛書文檔http://https://x509p6c8to.feishu.cn/docx/doxcnkGhtbxcv8ge5wKFkunsgmm 一、創建工程 cd ~/esp cp -r esp-idf/examples/get-started/hello_world . cd ~/esp/hello_world//設置目標板卡相關 idf.py set-target esp32//可配置工程屬性 idf.py menuconfig 工程源碼…

華為云Flexus+DeepSeek征文|體驗華為云ModelArts快速搭建Dify-LLM應用開發平臺并搭建查詢數據庫的大模型工作流

華為云FlexusDeepSeek征文|體驗華為云ModelArts快速搭建Dify-LLM應用開發平臺并搭建查詢數據庫的大模型工作流 什么是華為云ModelArts 華為云ModelArts ModelArts是華為云提供的全流程AI開發平臺,覆蓋從數據準備到模型部署的全生命周期管理&#xff0c…

【深度學習】TensorFlow全面指南:從核心概念到工業級應用

TensorFlow全面指南:從核心概念到工業級應用 一、TensorFlow:人工智能時代的計算引擎1.1 核心特性與優勢 二、安裝與環境配置2.1 版本選擇建議2.2 GPU支持關鍵組件 三、TensorFlow核心概念解析3.1 數據流圖(Data Flow Graph)3.2 張量(Tensor)&#xff1a…

在VTK中捕捉體繪制圖像進階(同步操作)

0. 概要 這段代碼實現了一個VTK(Visualization Toolkit)應用程序,主要功能是: 讀取DICOM醫學圖像序列并進行體繪制(Volume Rendering)創建一個主窗口顯示3D體繪制結果創建一個副窗口顯示主窗口的2D截圖將副窗口中的交互操作(如旋轉、縮放等)轉發到主窗口,而不影響副窗…

使用NPOI庫導出多個Excel并壓縮zip包

使用NPOI庫導出Excel文件可以按照以下步驟進行: 添加NPOI庫的引用:在項目中添加對NPOI庫的引用。 創建一個新的Excel文件對象:使用NPOI中的HSSFWorkbook(對應.xls格式)或XSSFWorkbook(對應.xlsx格式&#…

【AGI】突破感知-決策邊界:VLA-具身智能2.0

突破感知-決策邊界:VLA-具身智能2.0 (一)技術架構核心(二)OpenVLA:開源先鋒與性能標桿(三)應用場景:從實驗室走向真實世界(四)挑戰與未來方向&…

消融實驗視角下基于混合神經網絡模型的銀行股價預測研究

鏈接: 項目鏈接_link 結果 模型消融: 特征消融: 中國銀行_不同模型預測結果和模型評估可視化 招商銀行_不同模型預測結果和模型評估可視化 模型評估可視化