999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Selenium和Pytest的Web自動(dòng)化測(cè)試框架應(yīng)用

2024-01-24 08:52:09馬立鑫劉海燕張兵權(quán)
電腦知識(shí)與技術(shù) 2023年34期

馬立鑫 劉海燕 張兵權(quán)

摘要:文章介紹了一個(gè)基于Selenium、Pytest和Allure的Web自動(dòng)化測(cè)試框架,它能夠提高測(cè)試效率,減少測(cè)試人員的工作量,并生成美觀的測(cè)試報(bào)告。詳細(xì)介紹了該框架的功能、組成部分、實(shí)現(xiàn)與應(yīng)用以及使用Jenkins進(jìn)行持續(xù)集成的過(guò)程。該框架能夠幫助團(tuán)隊(duì)更高效地測(cè)試Web應(yīng)用。

關(guān)鍵詞:Selenium;Pytest;自動(dòng)化測(cè)試

中圖分類號(hào):TP311? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A

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

開放科學(xué)(資源服務(wù))標(biāo)識(shí)碼(OSID)

0 引言

如今越來(lái)越多的企業(yè)應(yīng)用選擇使用B/S架構(gòu)(即Web應(yīng)用),B/S架構(gòu)相對(duì)于C/S架構(gòu)更具有跨平臺(tái)、維護(hù)簡(jiǎn)便、數(shù)據(jù)安全性高、部署靈活性強(qiáng)和兼容性好等優(yōu)點(diǎn)。這些特點(diǎn)使得B/S架構(gòu)成為大多數(shù)Web應(yīng)用程序開發(fā)的首選架構(gòu)[1]。

隨著Web應(yīng)用不斷的擴(kuò)充,Web應(yīng)用的自動(dòng)化測(cè)試也在逐漸成為軟件自動(dòng)化測(cè)試的重要內(nèi)容。近年來(lái)誕生了許多自動(dòng)化測(cè)試工具,比較成熟的有QTP、Selenium、RFT等[2]65,其中Selenium具有多項(xiàng)優(yōu)良特性,成為Web應(yīng)用測(cè)試最受歡迎的工具之一。本文將基于Selenium并結(jié)合Pytest、Allure等工具實(shí)現(xiàn)一個(gè)Web自動(dòng)化測(cè)試框架。

1 自動(dòng)化測(cè)試相關(guān)技術(shù)和工具

1.1 Selenium測(cè)試工具

Selenium可以模擬真實(shí)用戶操作,以此進(jìn)行Web自動(dòng)化測(cè)試。Selenium具有開源免費(fèi)的特點(diǎn),可以進(jìn)行二次開發(fā),具有一定的可擴(kuò)展性[3]16。

1.2 Pytest測(cè)試框架

Pytest是一個(gè)非常成熟的Python測(cè)試框架,它可以和Selenium結(jié)合實(shí)現(xiàn)自動(dòng)化測(cè)試,也可以結(jié)合Allure-pytest插件生成Allure報(bào)告。

1.3 Allure報(bào)告生成工具

Allure是一款輕量級(jí)的自動(dòng)化測(cè)試報(bào)告生成框架。它支持絕大部分測(cè)試框架,它可以生成美觀、易讀的測(cè)試報(bào)告,提供了詳細(xì)的測(cè)試結(jié)果和統(tǒng)計(jì)信息。

1.4 Jenkins持續(xù)集成工具

Jenkins是一個(gè)開源的持續(xù)集成和交付工具,它能夠幫助團(tuán)隊(duì)自動(dòng)執(zhí)行測(cè)試任務(wù),提高了測(cè)試的效率[4]108。

2 框架功能分析

2.1 功能自動(dòng)化測(cè)試

Web項(xiàng)目的功能測(cè)試屬于黑盒測(cè)試。具體測(cè)試內(nèi)容包括:網(wǎng)頁(yè)鏈接是否可以正常打開與關(guān)閉,網(wǎng)頁(yè)內(nèi)容是否顯示無(wú)誤,網(wǎng)頁(yè)元素功能是否正常等。主要操作方式是通過(guò)對(duì)元素進(jìn)行識(shí)別、定位、點(diǎn)擊、文本輸入等完成測(cè)試[5]105。

2.2 頁(yè)面對(duì)象管理

頁(yè)面對(duì)象設(shè)計(jì)模式用于管理和組織 Web 自動(dòng)化測(cè)試代碼。在頁(yè)面對(duì)象模式中,每個(gè)頁(yè)面都有一個(gè)對(duì)應(yīng)的頁(yè)面對(duì)象類,每個(gè)類中封裝了相關(guān)的元素定位方式和操作方法,測(cè)試腳本只需要調(diào)用類中的方法即可完成對(duì)應(yīng)業(yè)務(wù)邏輯的測(cè)試[2]65。

2.3 框架的主要功能

自動(dòng)化測(cè)試框架需要完成Web應(yīng)用的測(cè)試需求,主要功能包括:測(cè)試用例的維護(hù)和管理,保證測(cè)試數(shù)據(jù)的完整[3]109;確保數(shù)據(jù)驅(qū)動(dòng)測(cè)試的實(shí)現(xiàn);能夠完成被測(cè)項(xiàng)目業(yè)務(wù)邏輯的封裝,并組合頁(yè)面元素的操作實(shí)現(xiàn)對(duì)應(yīng)的業(yè)務(wù)邏輯;可以很好地通過(guò)可視化的測(cè)試報(bào)告呈現(xiàn)測(cè)試結(jié)果;具有優(yōu)良的可擴(kuò)展性;能夠提高測(cè)試的效率。

2.4 框架的組成部分

測(cè)試模塊主要由基礎(chǔ)類庫(kù)層、頁(yè)面封裝層、測(cè)試用例層、工具模塊、持續(xù)集成工具等構(gòu)成,如圖1所示。

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

2) 頁(yè)面封裝層:Page包中的所有頁(yè)面層均繼承基礎(chǔ)類庫(kù)層,在頁(yè)面層中封裝元素的定位方式包括:Xpath、ID、CSS等八種定位方式和元素的定位路徑,并調(diào)用基礎(chǔ)類庫(kù)層實(shí)現(xiàn)元素的定位與操作[4]109。

3) 測(cè)試用例層:TestCase包中存放測(cè)試用例文件,每個(gè)測(cè)試用例文件都包含一個(gè)完整業(yè)務(wù)邏輯的測(cè)試用例。測(cè)試用例層可以調(diào)用一個(gè)或多個(gè)頁(yè)面封裝層,來(lái)實(shí)現(xiàn)特定場(chǎng)景的測(cè)試[4]。

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

5) 持續(xù)集成工具:測(cè)試框架集成了Jenkins持續(xù)集成工具,構(gòu)建完成后自動(dòng)生成測(cè)試報(bào)告[4]108,測(cè)試人員可以通過(guò)Jenkins管理員賬號(hào)查看測(cè)試報(bào)告和日志。

3 框架實(shí)現(xiàn)與應(yīng)用

3.1 環(huán)境搭建

實(shí)現(xiàn)自動(dòng)化測(cè)試首先需要安裝Python3軟件并配置環(huán)境變量。然后安裝Selenium、Pytest、Allure-pytets和Jenkins等工具。Selenium用于Web應(yīng)用自動(dòng)化測(cè)試。Pytest用于組織和執(zhí)行測(cè)試腳本。Allure用于生成豐富的測(cè)試報(bào)告。Jenkins用于自動(dòng)化執(zhí)行測(cè)試任務(wù)。

此外還需下載對(duì)應(yīng)的瀏覽器驅(qū)動(dòng),例如Chrome瀏覽器需要下載Chrome Driver,用于Selenium與瀏覽器進(jìn)行交互。

安裝完成后,使用Selenium提供的API結(jié)合Python編程語(yǔ)言編寫測(cè)試腳本,使用Pytest框架組織和執(zhí)行測(cè)試腳本,使用Allure-pytest生成測(cè)試報(bào)告,最后使用Jenkins進(jìn)行持續(xù)集成,自動(dòng)化執(zhí)行測(cè)試任務(wù)。

本系統(tǒng)使用的主要工具架構(gòu)圖如圖2所示。

3.2 測(cè)試用例設(shè)計(jì)

本文以某系統(tǒng)的登錄模塊,單車管理模塊作為自動(dòng)化測(cè)試框架的測(cè)試對(duì)象,該部分的測(cè)試用例設(shè)計(jì)如表1所示。采用等價(jià)類劃分法設(shè)計(jì)登錄模塊的測(cè)試用例。

3.3 自動(dòng)化測(cè)試實(shí)現(xiàn)

在進(jìn)行測(cè)試實(shí)現(xiàn)時(shí),首先需要進(jìn)行測(cè)試頁(yè)面的頁(yè)面對(duì)象設(shè)計(jì),以實(shí)現(xiàn)頁(yè)面元素的封裝;其次需要進(jìn)行測(cè)試用例的封裝,采用數(shù)據(jù)驅(qū)動(dòng)的方式來(lái)組織測(cè)試數(shù)據(jù);完成以上步驟后執(zhí)行測(cè)試,生成測(cè)試報(bào)告;最后使用持續(xù)集成工具來(lái)構(gòu)建項(xiàng)目并自動(dòng)執(zhí)行測(cè)試。

1) 頁(yè)面對(duì)象設(shè)計(jì)

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

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

2) 數(shù)據(jù)驅(qū)動(dòng)

使用Pytest內(nèi)置的參數(shù)化功能進(jìn)行數(shù)據(jù)封裝實(shí)現(xiàn)數(shù)據(jù)驅(qū)動(dòng),完成測(cè)試數(shù)據(jù)和測(cè)試邏輯分離。以登錄模塊為例,將登錄所需的用戶名和密碼封裝為一個(gè)元組,使用Pytest的參數(shù)化裝飾器將此元組作為參數(shù)傳遞給登錄函數(shù),關(guān)鍵代碼如圖4所示。

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

3) 測(cè)試報(bào)告

在測(cè)試框架中使用Allure-pytest庫(kù)生成自定義測(cè)試報(bào)告。該庫(kù)提供了修飾器和注解,用于標(biāo)注測(cè)試用例的功能模塊、標(biāo)題以及重要級(jí)別,從而生成詳細(xì)的測(cè)試報(bào)告。在測(cè)試報(bào)告中可以查看測(cè)試用例狀態(tài)圖,該圖標(biāo)注了測(cè)試用例通過(guò)百分比,還標(biāo)注出了失敗故障以及跳過(guò)的比例。報(bào)告樣式如圖5所示。

除用例狀態(tài)圖外,還可以查看詳細(xì)的功能報(bào)告,其中包括測(cè)試模塊、測(cè)試用例、測(cè)試數(shù)據(jù)、測(cè)試用例耗時(shí),以及測(cè)試日志等內(nèi)容詳細(xì)界面如圖6所示。

圖6中左半部分為所有的測(cè)試模塊及其詳細(xì)數(shù)據(jù),例如在登錄模塊下可以看到五個(gè)測(cè)試用例,在測(cè)試用例下可以看到測(cè)試數(shù)據(jù)、用例狀態(tài)和用例耗時(shí)。右半部分是單個(gè)測(cè)試用例的詳細(xì)數(shù)據(jù),主要包括測(cè)試用例的優(yōu)先級(jí)、耗時(shí)、參數(shù)和日志。

4) 持續(xù)集成工具

本框架使用Jenkins作為持續(xù)集成工具,用于自動(dòng)化打包部署和測(cè)試報(bào)告的生成。在Jenkins中,可以通過(guò)點(diǎn)擊測(cè)試報(bào)告來(lái)查看詳細(xì)的測(cè)試結(jié)果。每次構(gòu)建完成后,可以查看上次構(gòu)建的成功與失敗情況,以及構(gòu)建所花費(fèi)的時(shí)間等信息。具體的界面如圖7所示。

圖7中方框標(biāo)出的對(duì)象從左往右依次是查看測(cè)試報(bào)告按鈕、上次成功時(shí)間、上次失敗時(shí)間、上次持續(xù)時(shí)間以及構(gòu)建按鈕。

3.4 框架評(píng)估

本框架可以增加代碼的復(fù)用率,可以生成較美觀的測(cè)試報(bào)告,在回歸測(cè)試以及其他測(cè)試中具有較好的效果。測(cè)試人員可以較輕松地完成測(cè)試工作,通過(guò)自定義的測(cè)試報(bào)告和截圖可以很好地分析出測(cè)試失敗的原因,因此使用本框架可以幫助團(tuán)隊(duì)更高效地測(cè)試Web應(yīng)用。

4 結(jié)束語(yǔ)

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

參考文獻(xiàn):

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

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

[3] 楊靜.自動(dòng)化測(cè)試平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[D].北京:北京交通大學(xué),2020.

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

[5] 朱佳藝,劉從軍.基于Selenium的自動(dòng)化測(cè)試框架設(shè)計(jì)與實(shí)現(xiàn)[J].軟件導(dǎo)刊,2023,22(5):103-108.

【通聯(lián)編輯:謝媛媛】

主站蜘蛛池模板: 亚洲大尺码专区影院| 久久精品66| 91www在线观看| 国产亚洲精品自在线| 国产欧美视频一区二区三区| 亚洲美女高潮久久久久久久| 青青草原国产av福利网站| 91丝袜美腿高跟国产极品老师| 婷婷六月综合网| 三级毛片在线播放| 精品久久人人爽人人玩人人妻| 精品无码专区亚洲| 国产在线91在线电影| 国产成人高精品免费视频| 久久人人97超碰人人澡爱香蕉| 狂欢视频在线观看不卡| 久久人与动人物A级毛片| 首页亚洲国产丝袜长腿综合| 91久久精品国产| 日本少妇又色又爽又高潮| 日韩午夜福利在线观看| 五月激情婷婷综合| 亚洲91在线精品| 91精品国产自产在线观看| 久久这里只有精品66| 二级特黄绝大片免费视频大片| 国产成人在线无码免费视频| 欧美精品成人一区二区在线观看| 97视频在线精品国自产拍| 成人福利在线观看| 99尹人香蕉国产免费天天拍| 99在线视频免费观看| 日韩123欧美字幕| a欧美在线| 亚洲欧洲国产成人综合不卡| 国产91透明丝袜美腿在线| 日本精品视频| 欧美日韩在线亚洲国产人| 女同久久精品国产99国| 国产乱子伦一区二区=| 午夜啪啪网| 国产在线第二页| 国产精鲁鲁网在线视频| 亚洲综合第一页| 午夜a视频| 亚洲丝袜中文字幕| 国产欧美视频综合二区| 亚洲aaa视频| 91久久偷偷做嫩草影院| 91免费观看视频| 手机永久AV在线播放| 就去吻亚洲精品国产欧美| 99在线视频精品| 波多野结衣一区二区三区88| 国产精品99久久久久久董美香| 国产成人三级| 国产在线一二三区| 欧美日韩国产在线播放| 91久久国产热精品免费| 久久综合伊人 六十路| 国产一区二区精品福利| 夜夜高潮夜夜爽国产伦精品| 日本不卡免费高清视频| 日韩免费视频播播| 久久99国产视频| 日韩 欧美 国产 精品 综合| 亚洲第一网站男人都懂| 熟妇人妻无乱码中文字幕真矢织江 | 欧美啪啪一区| 欧美区国产区| 99精品久久精品| 午夜a级毛片| 欧美精品在线看| 欧美一区福利| 亚洲精品天堂在线观看| 久无码久无码av无码| 91精品aⅴ无码中文字字幕蜜桃| 九九九精品成人免费视频7| 波多野结衣第一页| 色综合婷婷| 免费av一区二区三区在线| 成人日韩视频|