市面上主流接口測試工具對比

公司計劃系統的開展接口自動化測試,需要我這邊調研一下主流的接口測試框架給后端測試(主要測試接口)的同事介紹一下每個框架的特定和使用方式。后端同事根據他們接口的特點提出一下需求,看哪個框架更適合我們。

2025最新Jmeter接口測試從入門到精通(全套項目實戰教程)

需求


1、接口編寫方便。
2、方便調試接口。
3、支持數據初始化。
4、生成測試報告。
5、支持參數化。


### robot framework


優點

  • 關鍵字驅動,自定義用戶關鍵字。

  • 支持測試日志和報告生成。

  • 支持系統關鍵字開發,可擴展性好。

  • 支持數據庫操作。

缺點

  • 接口測試用例寫起來不簡潔。

  • 需要掌握特定語法。

*** Settings ***
Library    RequestsLibrary
Library    Collections*** Test Cases ***
test_get_event_list    # 查詢發布會(GET請求)${payload}=    Create Dictionary    eid=1Create Session    event    http://127.0.0.1:8000/api${r}=    Get Request    event    /get_event_list/    params=${payload}Should Be Equal As Strings    ${r.status_code}    200log    ${r.json()}${dict}    Set variable    ${r.json()}#斷言結果${msg}    Get From Dictionary    ${dict}   messageShould Be Equal    ${msg}    success${sta}    Get From Dictionary    ${dict}    status${status}    Evaluate    int(200)Should Be Equal    ${sta}    ${status}

結果:不考慮,沒人愿意這么寫接口用例。


###JMeter


優點

  • 支持參數化

  • 不需要寫代碼

缺點

  • 創建接口用例效率不高。

  • 不能生成查看每一個接口執行情況的測試報告。

總結:不考慮,接口編寫不方便,最主要是不能生成測試報告,如果做接口性能的話可以考慮。


###HttpRunner


優點:

  • 基于YAML/JSON格式,專注于接口本身的編寫。

  • 接口編寫簡單

  • 生成測試報告

  • 接口錄制功能。

缺點:

  • 沒有編輯器插件對語法校驗,容易出錯。

  • 官方文檔沒有詳細的說明。

  • 擴展不方便。

[{"config": {"name": "testcase description","variables": [],"request": {"base_url": "http://127.0.0.1:5000","headers": {"User-Agent": "python-requests/2.18.4"}}}},{"test": {"name": "test case name","request": {"url": "/api/get-token","headers": {"device_sn": "FwgRiO7CNA50DSU","user_agent": "iOS/10.3","os_platform": "ios","app_version": "2.8.6","Content-Type": "application/json"},"method": "POST","date": {"sign": "958a05393efef0ac7c0fb80a7eac45e24fd40c27"}},"validate": [{"eq": ["status_code", 200]},{"eq": ["headers.Content-Type", "application/json"]},{"eq": ["content.success", true]},{"eq": ["content.token", "baNLX1zhFYP11Seb"]}]}}]

總結:可以考慮,至于接口數據的初始化可能需要單獨處理。

doc:?https://cn.httprunner.org/quickstart/


###gauge


BDD行為驅動測試框架。

優點:

  • 行為文件與腳本文件分離,本質上實現了數據驅動。

  • 功能強大靈活,本質上還用Python寫接口用例。

  • 自動生成測試報告。

  • VS Code有支持插件

缺點:

  • 門檻略高,需要了解BDD的用法。

  • 需要會markdworn語法

行為描述文件:

## test post request* post "http://httpbin.org/post" interface     |key  | status_code|     |------|-----------|     |value1|200        |     |value2|200        |     |value3|200        |

測試腳本:

……@step("post <url> interface <table>")
def test_get_request(url, table):values = []status_codes = []for word in table.get_column_values_with_name("key"):values.append(word)for word in table.get_column_values_with_name("status_code"):status_codes.append(word)for i in range(len(values)):r = requests.post(url, data={"key": values[i]})result = r.json()assert r.status_code == int(status_codes[i])

總結:推薦使用,BDD有一定門檻,看測試人員的學些能力和接受速度。

doc:?https://docs.gauge.org/latest/writing-specifications.html#special-parameter-csv


###Unittest+Request+HTMLRunner


利用現有的框架和庫自己定制。

優點:

  • 足夠靈活強大: 分層測試、數據驅動、測試報告,集成CI...

缺點:

  • 有一定的學習成本

數據文件:

{"test_case1": {"key": "value1","status_code": 200},"test_case2": {"key": "value2","status_code": 200},"test_case3": {"key": "value3","status_code": 200},"test_case4": {"key": "value4","status_code": 200}}

測試用例:

import requests
import unittest
from ddt import ddt, file_data@ddtclass InterfaceTest(unittest.TestCase):def setUp(self):self.url = "http://httpbin.org/post"def tearDown(self):print(self.result)@file_data("./data/test_data_dict.json")def test_post_request(self, key, status_code):r = requests.post(self.url, data={"key": key})self.result = r.json()self.assertEqual(r.status_code, status_code)

總結:推薦使用,代碼相對簡單,功能足夠靈活。


我花了兩天時間整理這些框架,其實重點就是了解HttpRunner 和 gauge 。
yg
HttpRunner 沒有編輯器插件,本身就是一個YAML/JSON配置文件,所以配置寫錯了,但只要是合法的YAML/JSON格式,也看不出來,只有運行的過后才知道。就像你用記事本寫代碼一樣,只有運行了才知道代碼有沒有寫錯。另外,擴展起來也不是特別方便,單獨用python實現一些函數:在json文件中```{"device_sn": "${gen_random_string(15)}"}```以這樣的方式引用```gen_random_string()``` 函數。gauge我已經分享過兩篇基礎文章了,雖然用BDD拿來做接口理念不搭,但并不是不可以,唯一的缺點是用BDD來描述接口行為不合適,其他的都沒毛病,可以參數化,斷言寫起來也簡單,測試報告也漂亮,本質上還是用Python實現一些功能,所以非常靈活。unittest + requests + HTMLTestRunner是我最熟悉的方案,幾乎沒什么短板。以前通過這種方案寫過很多測試用例,這次把ddt加上似乎更完美了。

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

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

相關文章

2025.2.4 更新 AI繪畫秋葉aaaki整合包 Stable Diffusion整合包v4.10 +ComfyUI 整合包下載地址

2025.2.4 更新 AI繪畫秋葉aaaki整合包 Stable Diffusion整合包v4.10 ComfyUI 整合包下載地址Stable Diffusion整合包【下載鏈接】ComfyUI整合包【下載鏈接】【報錯解決】Stable Diffusion整合包 【下載鏈接】 下載地址 https://uwtxfkm78ne.feishu.cn/wiki/GHgVwA2LPiE9x2kj4W…

Nginx優化與 SSL/TLS配置

1、隱藏版本號可以使用Fiddler工具抓取數據包&#xff0c;查看Nginx版本&#xff0c;也可以在CentOS中使用命令curl -I http://192.168.10.23 顯示響應報文首部信息。方法一&#xff1a;方法一&#xff1a;修改配置文件方式 vim /usr/local/nginx/conf/nginx.conf http {includ…

JavaWeb05

一、Listener監聽器1、簡介Listener是Servlet規范中的一員在Servlet中&#xff0c;所有的監聽器接口都是以Listener結尾監聽器實際上是Servlet規范留給JavaWeb程序員的一些特殊時機當在某些時機需要執行一段Java代碼時&#xff0c;可以用對應的監聽器2、常用的監聽器接口&#…

科普:在Windows個人電腦上使用Docker的極簡指南

在Windows個人電腦上使用Docker的極簡指南&#xff1a; 1. 快速安裝 下載安裝包&#xff08;若進不了官網&#xff0c;則可能要科學上網&#xff09; 訪問Docker Desktop官方下載頁 訪問Docker官網 選擇Windows及&#xff08;AMD64 也稱為 x86-64&#xff0c;是目前主流 PC的…

【開題答辯全過程】以 “居逸”民宿預訂微信小程序為例,包含答辯的問題和答案

個人簡介一名14年經驗的資深畢設內行人&#xff0c;語言擅長Java、php、微信小程序、Python、Golang、安卓Android等開發項目包括大數據、深度學習、網站、小程序、安卓、算法。平常會做一些項目定制化開發、代碼講解、答辯教學、文檔編寫、也懂一些降重方面的技巧。感謝大家的…

LeetCode 2565.最少得分子序列

給你兩個字符串 s 和 t 。 你可以從字符串 t 中刪除任意數目的字符。 如果沒有從字符串 t 中刪除字符&#xff0c;那么得分為 0 &#xff0c;否則&#xff1a; 令 left 為刪除字符中的最小下標。 令 right 為刪除字符中的最大下標。 字符串的得分為 right - left 1 。 請你返回…

【文獻筆記】PointWeb

參考筆記: https://blog.csdn.net/m0_69412369/article/details/143106494 https://www.cnblogs.com/A-FM/p/PointWeb.html 注:本文的大部分內容是轉載而來 CVPR 2019:PointWeb: Enhancing Local Neighborhood Features for Point Cloud Processing 論文:https://ieeex…

用工招聘小程序:功能版塊與前端設計解析

在當下就業市場日益活躍的背景下&#xff0c;用工招聘小程序應運而生&#xff0c;它以高效、便捷的特點&#xff0c;為求職者與企業搭建起一座溝通的橋梁。本文將深入分析這類小程序的核心功能版塊及其前端設計&#xff0c;探討其如何優化招聘流程&#xff0c;提升用戶體驗。用…

uTools 輕工具 簡潔又方便

uTools 是一款跨平臺輕工具平臺&#xff0c;通過插件化設計提供高效工作方式&#xff0c;支持 Windows、MacOS、Linux 系統。 ? 核心功能 ?超級搜索框?&#xff1a;支持快捷鍵&#xff08;默認 AltSpace&#xff09;呼出&#xff0c;可搜索文件、網頁、應用等。 ??本地文…

圖技術重塑金融未來:悅數圖數據庫如何驅動行業創新與風控變革

隨著大數據的廣泛應用和云計算的快速發展&#xff0c;金融行業的數據已經從“大”轉向了“海”&#xff0c;從而對傳統的數據處理、分析、挖掘等的方法和工具提出了更高的要求&#xff0c;也為金融領域的數據的海量的關聯分析、實時的風控和復雜的決策支持等帶來了一系列的挑戰…

openEuler 24.03 (LTS-SP2)簡單KVM安裝+橋接模式

華為文檔創建虛擬機步驟 配置bios支持虛擬化 2、檢查系統是否支持虛擬化 3、安裝虛擬化相關組件,并啟動 yum install -y qemu virt-install virt-manager libvirt-daemon-qemu edk2-aarch64.noarch virt-viewer systemctl start libvirtd systemctl enable libvirtd4、創建…

Sentinel:微服務架構下的高可用流量防衛兵

一、引言&#xff1a;為什么需要Sentinel&#xff1f; 在分布式系統架構中&#xff0c;隨著業務復雜度的提升和微服務架構的普及&#xff0c;服務之間的依賴關系變得越來越復雜。一個服務的不可用或異常可能會在整個系統中產生連鎖反應&#xff0c;導致整個系統崩潰。這就是所…

詳解 new 和 delete

目錄 一、簡要描述兩者的作用 二、實例解析 1. 淺層區別 2. 深層區別 三、拓展&#xff08;operator new 的妙用&#xff09; 一、簡要描述兩者的作用 new : 是c推崇的 內存申請 方式&#xff0c;擁有比 malloc 更先進的機制 delete :是 對應的 內存釋放方式&#xff0c;…

fMoE論文閱讀筆記

原文鏈接&#xff1a;https://arxiv.org/pdf/2502.05370v1 在混合專家&#xff08;MoE&#xff09;架構中&#xff0c;初始階段涉及輸入樣本通過GateNet進行多分類的鑒別過程&#xff0c;目的是確定最適合處理輸入的專家模型。這個步驟被稱為“experts selection”&#xff0c;…

Linux 禪道開源版安裝

1、下載安裝包安裝wget https://www.zentao.net/dl/zentao/18.5/ZenTaoPMS.18.5.zbox_64.tar.gz tar zxf ZenTaoPMS.18.5.zbox_64.tar.gz/opt/zbox/zbox -ap 81 -mp 3307 # 指定apache服務端口 、 mysql服務端口 /opt/zbox/zbox start #啟動禪道服務( 其他命令 /opt/zbox/…

PySpark基礎知識(python)

PySpark 是 Apache Spark 的 Python API&#xff0c;它允許開發者使用 Python 語言編寫 Spark 應用程序&#xff0c;結合了 Python 的易用性和 Spark 的分布式計算能力&#xff0c;是處理大規模數據的強大工具。 一、安裝與環境配置 安裝方式&#xff1a; 通過 pip 安裝&#…

基于python大數據的電影數據分析可視化系統設計與應用

標題:基于python大數據的電影數據分析可視化系統設計與應用內容:1.摘要 本研究旨在設計并實現一個基于Python的大數據電影數據分析與可視化系統&#xff0c;以解決當前電影行業數據分散、分析效率低及可視化能力不足的問題。系統采用Python語言結合Pandas、NumPy進行數據清洗與…

【PyTorch】圖像多分類

多類圖像分類的目標是為一組固定類別中的圖像分配標簽。目錄 加載和處理數據 搭建模型 定義損失函數 定義優化器 訓練和遷移學習 用隨機權重進行訓練 用預訓練權重進行訓練 加載和處理數據 將使用 PyTorch torchvision 包中提供的 STL-10 數據集&#xff0c;數據集中有…

計算機視覺----opencv實戰----指紋識別的案例

一、數據準備src2.BMPsrc1.BMPsrc.bmpmodel.BMP二、識別原理講解&#xff08;sift特征提取&#xff09;SIFT&#xff08;Scale-Invariant Feature Transform&#xff0c;尺度不變特征變換&#xff09;是一種經典的圖像特征提取算法&#xff0c;核心優勢是不受圖像尺度縮放、旋轉…

npm 發布流程——從創建組件到發布到 npm 倉庫

1. 準備組件 1.1 創建一個 Vue 組件 假設我們要創建一個簡單的按鈕組件&#xff1a; src/MyButton.vue <template><button class"my-btn" click"$emit(click)"><slot /></button> </template><script setup lang"ts…