?

基于Selenium和Pytest的Web自動化測試框架應用

2024-01-24 08:52馬立鑫劉海燕張兵權
電腦知識與技術 2023年34期
關鍵詞:自動化測試

馬立鑫 劉海燕 張兵權

摘要:文章介紹了一個基于Selenium、Pytest和Allure的Web自動化測試框架,它能夠提高測試效率,減少測試人員的工作量,并生成美觀的測試報告。詳細介紹了該框架的功能、組成部分、實現與應用以及使用Jenkins進行持續集成的過程。該框架能夠幫助團隊更高效地測試Web應用。

關鍵詞:Selenium;Pytest;自動化測試

中圖分類號:TP311? ? ? 文獻標識碼:A

文章編號:1009-3044(2023)34-0052-03

開放科學(資源服務)標識碼(OSID)

0 引言

如今越來越多的企業應用選擇使用B/S架構(即Web應用),B/S架構相對于C/S架構更具有跨平臺、維護簡便、數據安全性高、部署靈活性強和兼容性好等優點。這些特點使得B/S架構成為大多數Web應用程序開發的首選架構[1]。

隨著Web應用不斷的擴充,Web應用的自動化測試也在逐漸成為軟件自動化測試的重要內容。近年來誕生了許多自動化測試工具,比較成熟的有QTP、Selenium、RFT等[2]65,其中Selenium具有多項優良特性,成為Web應用測試最受歡迎的工具之一。本文將基于Selenium并結合Pytest、Allure等工具實現一個Web自動化測試框架。

1 自動化測試相關技術和工具

1.1 Selenium測試工具

Selenium可以模擬真實用戶操作,以此進行Web自動化測試。Selenium具有開源免費的特點,可以進行二次開發,具有一定的可擴展性[3]16。

1.2 Pytest測試框架

Pytest是一個非常成熟的Python測試框架,它可以和Selenium結合實現自動化測試,也可以結合Allure-pytest插件生成Allure報告。

1.3 Allure報告生成工具

Allure是一款輕量級的自動化測試報告生成框架。它支持絕大部分測試框架,它可以生成美觀、易讀的測試報告,提供了詳細的測試結果和統計信息。

1.4 Jenkins持續集成工具

Jenkins是一個開源的持續集成和交付工具,它能夠幫助團隊自動執行測試任務,提高了測試的效率[4]108。

2 框架功能分析

2.1 功能自動化測試

Web項目的功能測試屬于黑盒測試。具體測試內容包括:網頁鏈接是否可以正常打開與關閉,網頁內容是否顯示無誤,網頁元素功能是否正常等。主要操作方式是通過對元素進行識別、定位、點擊、文本輸入等完成測試[5]105。

2.2 頁面對象管理

頁面對象設計模式用于管理和組織 Web 自動化測試代碼。在頁面對象模式中,每個頁面都有一個對應的頁面對象類,每個類中封裝了相關的元素定位方式和操作方法,測試腳本只需要調用類中的方法即可完成對應業務邏輯的測試[2]65。

2.3 框架的主要功能

自動化測試框架需要完成Web應用的測試需求,主要功能包括:測試用例的維護和管理,保證測試數據的完整[3]109;確保數據驅動測試的實現;能夠完成被測項目業務邏輯的封裝,并組合頁面元素的操作實現對應的業務邏輯;可以很好地通過可視化的測試報告呈現測試結果;具有優良的可擴展性;能夠提高測試的效率。

2.4 框架的組成部分

測試模塊主要由基礎類庫層、頁面封裝層、測試用例層、工具模塊、持續集成工具等構成,如圖1所示。

1) 基礎類庫層:Common包中存放著公共類其中封裝了所有操作,包括查找一個元素、輸入文本、點擊操作等操作。在測試過程中還有一些場景需要進行截圖操作,在基礎類庫層中定義一個截圖方法并指定截圖的存儲路徑,截圖保存時命名為“頁面(功能名稱)(當前時間).png”格式。

2) 頁面封裝層:Page包中的所有頁面層均繼承基礎類庫層,在頁面層中封裝元素的定位方式包括:Xpath、ID、CSS等八種定位方式和元素的定位路徑,并調用基礎類庫層實現元素的定位與操作[4]109。

3) 測試用例層:TestCase包中存放測試用例文件,每個測試用例文件都包含一個完整業務邏輯的測試用例。測試用例層可以調用一個或多個頁面封裝層,來實現特定場景的測試[4]。

4) 工具模塊:Utils包中存放工具類,其中包含自定義日志類,在其中定義日志的存儲路徑、日志的級別等。

5) 持續集成工具:測試框架集成了Jenkins持續集成工具,構建完成后自動生成測試報告[4]108,測試人員可以通過Jenkins管理員賬號查看測試報告和日志。

3 框架實現與應用

3.1 環境搭建

實現自動化測試首先需要安裝Python3軟件并配置環境變量。然后安裝Selenium、Pytest、Allure-pytets和Jenkins等工具。Selenium用于Web應用自動化測試。Pytest用于組織和執行測試腳本。Allure用于生成豐富的測試報告。Jenkins用于自動化執行測試任務。

此外還需下載對應的瀏覽器驅動,例如Chrome瀏覽器需要下載Chrome Driver,用于Selenium與瀏覽器進行交互。

安裝完成后,使用Selenium提供的API結合Python編程語言編寫測試腳本,使用Pytest框架組織和執行測試腳本,使用Allure-pytest生成測試報告,最后使用Jenkins進行持續集成,自動化執行測試任務。

本系統使用的主要工具架構圖如圖2所示。

3.2 測試用例設計

本文以某系統的登錄模塊,單車管理模塊作為自動化測試框架的測試對象,該部分的測試用例設計如表1所示。采用等價類劃分法設計登錄模塊的測試用例。

3.3 自動化測試實現

在進行測試實現時,首先需要進行測試頁面的頁面對象設計,以實現頁面元素的封裝;其次需要進行測試用例的封裝,采用數據驅動的方式來組織測試數據;完成以上步驟后執行測試,生成測試報告;最后使用持續集成工具來構建項目并自動執行測試。

1) 頁面對象設計

本框架在模塊設計上使用了Page-Object思想,每個頁面都會有一個對應的頁面類,在頁面類中封裝該頁面的元素和操作方法。 以登錄模塊為例,在Login類中以元組的形式封裝登錄頁面所需的用戶名、密碼和登錄按鈕,封裝代碼如圖3所示。

圖3方框中標出的對象自上而下分別為用戶名輸入框、密碼輸入框以及登錄按鈕,以元組的方式封裝元素定位方式By.XPATH和定位路徑。

2) 數據驅動

使用Pytest內置的參數化功能進行數據封裝實現數據驅動,完成測試數據和測試邏輯分離。以登錄模塊為例,將登錄所需的用戶名和密碼封裝為一個元組,使用Pytest的參數化裝飾器將此元組作為參數傳遞給登錄函數,關鍵代碼如圖4所示。

圖4方框中使用了Pytest的 @pytest.mark.parametrize修飾器,將用戶名和密碼封裝為一個元組并作為參數傳遞給登錄函數,在函數中進行調用完成登錄功能的測試。

3) 測試報告

在測試框架中使用Allure-pytest庫生成自定義測試報告。該庫提供了修飾器和注解,用于標注測試用例的功能模塊、標題以及重要級別,從而生成詳細的測試報告。在測試報告中可以查看測試用例狀態圖,該圖標注了測試用例通過百分比,還標注出了失敗故障以及跳過的比例。報告樣式如圖5所示。

除用例狀態圖外,還可以查看詳細的功能報告,其中包括測試模塊、測試用例、測試數據、測試用例耗時,以及測試日志等內容詳細界面如圖6所示。

圖6中左半部分為所有的測試模塊及其詳細數據,例如在登錄模塊下可以看到五個測試用例,在測試用例下可以看到測試數據、用例狀態和用例耗時。右半部分是單個測試用例的詳細數據,主要包括測試用例的優先級、耗時、參數和日志。

4) 持續集成工具

本框架使用Jenkins作為持續集成工具,用于自動化打包部署和測試報告的生成。在Jenkins中,可以通過點擊測試報告來查看詳細的測試結果。每次構建完成后,可以查看上次構建的成功與失敗情況,以及構建所花費的時間等信息。具體的界面如圖7所示。

圖7中方框標出的對象從左往右依次是查看測試報告按鈕、上次成功時間、上次失敗時間、上次持續時間以及構建按鈕。

3.4 框架評估

本框架可以增加代碼的復用率,可以生成較美觀的測試報告,在回歸測試以及其他測試中具有較好的效果。測試人員可以較輕松地完成測試工作,通過自定義的測試報告和截圖可以很好地分析出測試失敗的原因,因此使用本框架可以幫助團隊更高效地測試Web應用。

4 結束語

本文提出的一種基于Selenium和Pytest的Web自動化測試框架,可以減少代碼冗余,以及編寫腳本的時間,提高測試效率,減少測試工作量,使用該框架可以生成優美的測試報告,用例執行后生成截圖和日志供測試人員分析,使用本框架可以更高效、更便捷地完成測試任務。本框架在一些任務上還存在不足,例如測試手機登錄時選擇驗證碼登錄的功能不能實現自動化,對于一些復雜的驗證碼,則需要在后期的研究中進行實現。

參考文獻:

[1] 單攀攀.一種基于Selenium與Unittest的Web自動化測試框架[J].信息技術與網絡安全,2021,40(9):77-80.

[2] 羊昌燕,鄧印凱.基于Selenium的自動化測試框架設計[J].信息技術與信息化,2021(10):65-68.

[3] 楊靜.自動化測試平臺的設計與實現[D].北京:北京交通大學,2020.

[4] 吳伶琳,方巍.Web自動化測試開源框架研究[J].信息技術與信息化,2022(11):108-111.

[5] 朱佳藝,劉從軍.基于Selenium的自動化測試框架設計與實現[J].軟件導刊,2023,22(5):103-108.

【通聯編輯:謝媛媛】

猜你喜歡
自動化測試
淺談空調控制器自動化測試
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合