基於Selenium+Python的web自動化測試框架
一、什麼是Selenium?
Selenium是一個基於瀏覽器的自動化測試工具,它提供了一種跨平臺、跨瀏覽器的端到端的web自動化解決方案。Selenium主要包括三部分:Selenium IDE、Selenium WebDriver 和Selenium Grid。
-
Selenium IDE:Firefox的一個擴充套件,它可以進行錄製回放,並把錄製的操作以多種語言(例如java、python等)的形式匯出成測試用例。
-
Selenium WebDriver:提供Web自動化所需的API,主要用作瀏覽器控制、頁面元素選擇和除錯。不同的瀏覽器需要不同的WebDriver。
-
Selenium Grid:提供了在不同機器的不同瀏覽器上執行selenium測試的能力。
本文將詳細介紹如何運用Python結合Selenium WebDriver庫搭建web自動化測試框架。
二、自動化測試框架
一個典型的自動化測試框架一般包括用例管理模組、自動化執行控制器、報表生成模組和log模組,這些模組相輔相成。
接下來介紹各模組的邏輯單元:
1、用例管理模組
用例管理模組包括新增、修改、刪除等操作單元,這些單元又會涉及到用例書寫模式,測試資料庫的管理、可複用庫等。
2、自動化控制器
控制器是自動化用例執行的組織模組,主要是負責以什麼方法執行我們的測試用例.
3、報表生成模組
主要負責執行用例後的生成報告,一般以HTML格式居多,資訊主要是用例執行情況。另外還可以配置傳送郵件功能。
4、log模組
主要用來記錄用例執行情況,以便於高效的調查用例失敗資訊以及追蹤用例執行情況。
三、自動化框架的設計和實現
1、需求分析
首先我們的測試物件是一個web平臺,基於此平臺設計的框架要包含測試用例管理、測試執行控制器、測試報告以及測試日誌的生成。
2、設計和實現
頁面管理
假設測試web物件為一個典型單頁面應用,所以我們採用頁面模式。頁面模式是頁面與測試用例之間的紐帶,它將每個頁面抽象成一個單獨的類,為測試用例提供頁面元素的定位和操作。
BaseClass作為父類只包含driver成員變數,用來標識Selenium中的WebDriver,以便在子類中定位頁面元素。LoginClass和PageClass作為子類,可以提供頁面元素的定位和操作方法。比如登入頁面。
從頁面看,需要操作的元素分別為:登入使用者名稱、密碼、下次自動登入和登入按鈕。具體實現程式碼如下:
頁面父類BaseClass.py
LoginClass繼承自BaseClass,並進行登入的元素定位以及操作實現。程式碼中定位了username和password,並新增了設定使用者名稱和密碼的操作。
公共庫模組
公共庫模組是為建立測試用例服務的,主要包括常量、公共函式、日誌、報告等。
Common.py
測試用例資訊類用來標識測試用例,並且包括執行用例、執行結果資訊,主要包括以下欄位。
日誌主要用來記錄測試用例執行步驟及產生的錯誤資訊,不同的資訊有不同的日誌級別,比如Information、Warning、Critical和Debug。由於每個測試用例產生的日誌條目比較少,所以在測試框架中只利用了最高階別的日誌列印,即Debug級別,該級別也會將其他所有的日誌級別的資訊同樣列印出來。在具體的實現中引用了Python標準庫中的logging類庫,以便更方便的控制日誌輸出。
測試用例倉庫
用例倉庫主要用來組織自動化測試用例。每條測試用例都被抽象成一個獨立的類,並且均繼承自unittest.TestCase類。 Python中的unittest庫提供了豐富的測試框架支援,包括測試用例的setUp和tearDown方法,在實現用例的過程中可以重寫。依託頁面管理和公共庫模組實現的頁面方法和公共函式,每一個測試用例指令碼的書寫都會非常清晰簡潔。
從這個測試用例中,我們可以看到
- Setup中定義了執行測試用例前的一些例項化工作
- tearDown對執行完測試做了清理和寫日誌檔案工作
- 測試步驟、測試資料和測試檢查點非常清晰,易修改(比如使用者名稱密碼)
- 日誌級別僅有Debug,所以寫日誌僅需用同一Log方法
3、用例執行模組
執行模組主要用來控制測試用例指令碼的批量執行,形成一個測試集。用例的執行引用了Python標準庫中的subprocess來執行nosetests的shell命令,從而執行給定測試用例集中的用例。測試用例集是一個簡單的純文字檔案,實現過程中利用了.txt檔案testcases.txt。
用例前沒有“#“標記的測試用例指令碼會被執行,而有”#“標記的則會被忽略,這樣可以很方便的控制測試集的執行,當然也可以建立不同的檔案來執行不同的測試集。
四、需要改進的模組
對於現有實現的測試框架,已經可以滿足web物件的自動化需求,但還是有些可以改進提高的地方,比如:
- 部分用例可以嘗試資料驅動。
- 二次封裝selenium的By函式,以便更高效定位元素。
- 沒有進行持續化整合。
五、總結
基於Selenium實現的web自動化測試框架不僅輕量級而且靈活,可以快速地開發自動化測試用例,結合本篇的框架設計和一些好的實踐,希望對大家以後的web自動化框架的設計和實現有所幫助。
作者:武貫祥
來源:宜信技術學院
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69918724/viewspace-2656839/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Web自動化測試 環境搭建(selenium+python)WebPython
- selenium+python自動化測試Python
- Web自動化測試 —— 測試環境搭建 (Selenium+Python) Windows篇WebPythonWindows
- 基於Selenium + Python的web自動化框架PythonWeb框架
- 一種基於 cypress 的 UI 自動化測試框架UI框架
- 基於LangChain手工測試用例轉Web自動化測試生成工具LangChainWeb
- 關於Web端-UI自動化測試WebUI
- 基於 Htte 的 API 自動化測試API
- 自動化測試框架框架
- web自動化測試框架-06 如何快速編寫自動化指令碼Web框架指令碼
- 基於Python的介面自動化-unittest測試框架和ddt資料驅動Python框架
- 一個基於多介面的業務自動化測試框架框架
- 基於 RF 的 WEB 版自動管理測試平臺Web
- 基於AI的移動端自動化測試框架的設計與實踐AI框架
- 自動化測試框架指南框架
- 基於Pytest豆瓣自動化測試【1】
- 基於Python豆瓣自動化測試【2】Python
- 自動化測試框架的AW模式框架模式
- 基於postman的api自動化測試實踐PostmanAPI
- 測試開發之自動化篇-自動化測試框架設計框架
- Python 自動化測試框架unittestPython框架
- 介面自動化測試框架 HttpFPT框架HTTP
- Python自動化測試框架-pytestPython框架
- 利用tox打造自動自動化測試框架框架
- T框架介紹(自動化測試框架)框架
- 大佬對 WEB 自動化測試的看法Web
- Web自動化-Selenium自動化測試-4-編寫測試用例Web
- 介面自動化測試框架搭建的思路框架
- 構建高效的自動化測試框架框架
- 為什麼很多基於 python 的自動化測試框架要用 excel 寫用例Python框架Excel
- 2023年好用的自動化測試框架有哪些?如何提高自動化測試效果?框架
- Selenium Web Driver自動化測試(java版)系列下半部分(37) - 關鍵字驅動自動化測試框架(2)-測試過程...WebJava框架
- Robot Framework自動化測試框架核心指南-如何做好自動化測試平臺框架的設計Framework框架
- 基於事件驅動的測試框架ETS事件框架
- 關於介面測試——自動化框架的設計與實現框架
- 14 Web 自動化測試 -- PageObject 思想WebObject
- web自動化測試框架-05 建立資料驅動的測試用例,Doc String與Data TableWeb框架
- Java + SikuliX 基於影像實現自動化測試Java