Pytest自動化測試 - 對比RobotFramework框架

 一、前言

測試框架的作用是幫助我們管理測試用例、執行測試用例、參數化、斷言、生成測試報告等基礎性工作,

讓我們將精力用在測試用例的編寫上。好的測試框架應該具有很高的擴展性,支持二次開發,並能夠支持多種類型的自動化測試。

測試工具的作用是爲了完成某一類型的測試,比如Selenium用於對WEB UI進行自動化測試,Appium用來對APP進行自動化測試,Jmeter可以用來進行API自動化測試和性能測試。

另外,Java語言中OkHttp庫,Python語言中的requests庫,這些HTTP的client也可以看做是一種API測試工具。

 


二、框架對比

Robot Framework

Robot Framework是一個基於Python的,可擴展的關鍵字驅動的自動化測試框架,用於端到端驗收測試和驗收測試驅動開發(ATDD)。

優點:

1)啓用易於使用的表格語法,以統一的方式創建測試用例。

2)提供從現有關鍵字創建可重複使用的更高級別關鍵字的功能。

3)提供易於閱讀的結果報告和HTML格式的日誌。

4)提供一個簡單的庫API,用於創建自定義測試庫

5)提供標記以分類和選擇要執行的測試用例。

缺點:

1)固定的表格編寫形式,使很多簡單的語法變得複雜化,而且不支持複雜語法,不夠靈活,並且不利於提升測試人員的代碼編寫能力,而且容易編寫疲勞。

2)測試數據和測試代碼穿插寫到同一文件、同一方法中,產生了緊耦合,會導致修改測試數據或測試代碼時,可能會相互影響,不利於測試數據和測試腳本的維護。

 

Pytest】 

Pytest 是Python的一種易用、高效和靈活的單元測試框架,可以支持單元和功能測試。

優點:

1)容易上手,入門簡單,文檔豐富,文檔中有很多實例可以參考。

2)能夠支持簡單的單元測試和複雜的功能測試。

3)能夠執行全部測試用例,也可以挑選部分測試用例執行,並能自動重試失敗用例

4)支持併發執行,還能運行由nose, unittest編寫的測試用例。

5)具有很多第三方插件,並且可以自定義擴展。

缺點:

1)由於純Python編寫,需要測試人員具有一定的代碼編寫與閱讀能力

2)Pytest本身沒有直觀的用例顯示與瀏覽頁面,需要藉助第三方模塊展示用例分佈情況(比如Allure)

 編寫規則:

  • 測試文件以test_開頭(以_test結尾也可以)
  • 測試類以Test開頭,並且不能帶有init方法
  • 測試函數以test_開頭
  • 斷言使用基本的assert即可

常用裝飾器:

@allure.feature("06成人模塊")

class TestAppoint:

    @allure.story("601接種單位地區查詢")

    @allure.severity(allure.severity_level.NORMAL)

    @pytest.mark.parametrize("case", testcase_01, ids=casename_01)

    def test_601getYyUnits(self, case):
      print(‘測試用例’)

 


三、新框架說明

comm: 通用模塊

  callJava.py:涉及到項目數據加密、序列化方法封裝

  queryEs.py:關於ES數據查詢方法封裝

  queryMysql.py:關於Mysql類以及數據查詢方法封裝

  queryRedis.py:關於Redis各種類型數據查詢方法封裝(根據庫類型配置判斷查詢方法)

  sendHprose.py:對於Hprose接口調用方法封裝

  sendHttp.py:對於Http(post/get)接口調用方法封裝

  writeLogs.py:用於日誌輸出與保存類的封裝

  doDatetime.py:日期時間處理方法封裝(日期類型轉換、年齡週期計算)

conf: 配置文件

  dbinfo.py:redis庫類型配置

  yfjzConfig-js.ini:預防接種配置

  ymtConfig.ini:育苗通配置

  rconfig.py:配置讀取

data: 測試用例數據(yaml文件)

unit: 項目接口封裝

  baseMethod.py:通用模塊與配置結合

  apiYfjzService.py:預防接種常用API接口封裝

  apiYmtArchives.py:育苗通檔案信息類API接口封裝

  apiYmtOnlineBook.py:育苗通在線操作類API接口封裝

  apiYmtService.py:育苗通常用業務方法封裝(預製數據、信息查詢、完整一系列動作)

  assertResult.py:數據校驗基礎方法封裝

  checkResult.py:接口返回和數據庫校驗入口方法封裝

  checkPersonInfo.py:人員信息六表校驗方法封裝

  checkAppInfo.py:App業務和在線預約數據庫校驗方法封裝

testcase:測試用例

   conftest.py:預處理模塊

  test_01sync.py:數據推送模塊

  test_02register.py:手機註冊模塊

  test_03bind.py:人員綁定模塊

  test_04archives.py:檔案顯示模塊

  test_05appoint.py:在線預約模塊

  test_06adult.py:成人預約模塊

requirements.txt:項目依賴

startup.py:啓動文件

解決的痛點:

1)方法(關鍵字)的入參過多,容易混淆、使用混亂

2)方法封裝層次簡單,重複代碼過多,導致自動化用例臃腫(一兩百行)

3)方法功能單一,總體方法太多,使用不便(redis七八種查詢方式)

4)隨着用例越來越多,不能併發執行,總執行耗時太長(幾個小時)

5)測試數據固定,參數化太少,對於環境依賴太多,無法擴展(無法切換省市執行)

 


四、        新版自動化流程圖

1、 自動化運行流程圖

 

 

2、 接口校驗流程圖

 

 

3、數據庫校驗流程圖

 

 

作者:Leozhanggg

出處:https://www.cnblogs.com/leozhanggg/p/13955012.html

本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章