接口自動化測試各種框架的介紹與對比


一、一張圖表告訴你接口自動化框架有哪些,他們之間有何區別:

另外,現階段流行推薦使用:Python+unittest+requests+HTMLTestRunner框架

二、Java Rest-assured框架:

  Java Rest-assured 是使用代碼來實現接口的請求,封裝業務流程,對於公司的業務支持比較高,靈活度很強,可以通過代碼的方式打造自己公司的接口自動化框架,上手有點難度,需要有Java 編程基礎,才可以使用。

三、python+ Request框架:

python+ Request 是使用代碼來實現接口的請求,封裝業務流程,對於公司的業務支持比較高,可以根據業務的靈活度來定制化開發接口框架,再加上Jenkins 就可以持續化集成。上手有點難度,需要有Python 編碼的基礎,才可以使用。

四、Robot Framework框架:

官網介紹機器人框架是一個通用的開放源碼自動化框架,用於驗收測試、驗收測試驅動開發(ATDD)和機器人過程自動化(RPA)。它具有易於使用的表格測試數據語法,並利用關鍵字驅動的測試方法.它的測試功能可以通過用Python或Java實現的測試庫來擴展,用戶可以使用與創建測試用例相同的語法從現有的測試庫中創建新的更高級別的關鍵字。

1、它的優點:

(1)關鍵字驅動,自定義用戶關鍵字。

(2)支持測試日志和報告生成。

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

(4)支持數據庫操作。

2、它的缺點:

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

需要掌握特定語法。

*** Settings ***

Library    RequestsLibrary

Library    Collections

*** Test Cases ***

test_get_event_list    # 查詢發布會(GET請求)

${payload}=    Create Dictionary    eid=1

Create 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}    200

log    ${r.json()}

${dict}    Set variable    ${r.json()}

#斷言結果

${msg}    Get From Dictionary    ${dict}   message

Should Be Equal    ${msg}    success

${sta}    Get From Dictionary    ${dict}    status

${status}    Evaluate    int(200)

Should Be Equal    ${sta}    ${status}

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

五、HttpRunner框架:

HttpRunner 是一款面向 HTTP(S) 協議的通用測試框架,只需編寫維護一份 YAML/JSON 腳本,即可實現自動化測試、性能測試、線上監控、持續集成等多種測試需求, 網址:https://cn.httprunner.org/ 官網已經有很詳細的介紹。

1、它的優點:

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

接口編寫簡單

生成測試報告

接口錄制功能。

2、它的缺點:

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

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

擴展不方便。

[

{

"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"]}

]

}

}]

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

六、Postman+Newman框架:

postman + Newman  + Jenkins 實現接口自動化框架,postman 方便日常的調試,非常的方便,測試的斷言,設置前置條件,環境變量,response 參數提取 非常方便,我在日常工作中經常使用 postman進行接口的調試。postman高級的功能可以付費進行定制化,官網文檔地址: https://learning.getpostman.com/docs/

 七、Jmeter+Ant框架:

Jmeter可以做於接口自動化工具,也可以用於性能測試,在性能測方面很強大,大家可以去了解。

1、它的優點:

支持參數化

不需要寫代碼

2、它的缺點:

創建接口用例效率不高。

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

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

八、Vue+Flask&Django框架:
Vue+Flask 搭建自己公司的接口測試平台,可以自由定制化自己公司的業務,實現公司特殊的需求,接口測試平台,對於測試的開發能力有要求,前端 Vue ,后端 Flask & Django 框架,代碼能力要求高,前后端的技術都需要懂。
九、Python+unittest+requests+HTMLTestRunner框架(推薦使用):
利用現有的框架和庫自己定制:Unittest+Request+HTMLRunner

1、它的優點:

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

2、它的缺點:

有一定的學習成本

  數據文件:

{

"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)

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

 十、總結:

 1、對於單接口,變化不多的可以使用  Postman、 Jmeter、HttpRunner框架就可以滿足了,需要多個接口組合滿足於一些場景的,需要自己編寫代碼來實現了 比如:
  登錄,提取token,查詢商品ID 訂單ID 進行購買商品,支付,以及查詢用戶購買訂單狀態
 2、對於一些業務場景涉及多個接口的,需要使用代碼的方式來查詢接口需要的前置信息,如 token, 商品ID,訂單ID,訂單狀態,以實現業務場景的接口功能測試。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM