一、前言
測試框架的作用是幫助我們管理測試用例、執行測試用例、參數化、斷言、生成測試報告等基礎性工作,
讓我們將精力用在測試用例的編寫上。好的測試框架應該具有很高的擴展性,支持二次開發,並能夠支持多種類型的自動化測試。
測試工具的作用是爲了完成某一類型的測試,比如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
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。