从零开始搭建一个简单的ui自动化测试框架02(pytest+selenium+allure)
二、先搭一個(gè)架子
在我還是小白連py語(yǔ)法都不太熟悉的時(shí)候,經(jīng)常在網(wǎng)上看關(guān)于自學(xué)ui自動(dòng)化測(cè)試的博客,最熟悉的套路莫過(guò)于先給你介紹一下selenium的各個(gè)api,然后寫一套代碼去登陸微博或者百度什么的,但我今天不愿意這么寫,因?yàn)檫@樣的話,實(shí)際上并沒有什么卵用,他不能用到實(shí)際的項(xiàng)目里,今天我們來(lái)先搭一個(gè)架子。
搭架子先畫圖
我們首先來(lái)確定一下我們的項(xiàng)目架構(gòu)圖,也即是我們打算怎么具體設(shè)計(jì)我們的項(xiàng)目,下面來(lái)聊一聊我設(shè)計(jì)時(shí)的思路。
其他的先不談,測(cè)試用例肯定是集中放到一個(gè)地方的,于是我創(chuàng)建了一個(gè)testcase的位置專門用來(lái)放用例,此時(shí)我們的架構(gòu)圖是這樣的:
—————testcase
接下來(lái)我又想到,我們的用例可能需要按照要求集合執(zhí)行,所以我又創(chuàng)建了一個(gè)testsuite的位置專門放集合的用例,于是架構(gòu)圖多了一個(gè):
—————testcase
—————testsuite
然后又想到,因?yàn)槲覀兊臏y(cè)試用例需要支持單獨(dú)執(zhí)行,所以必然需要重復(fù)的測(cè)試前和測(cè)試后的動(dòng)作,先不談更多的動(dòng)作,但是打開和關(guān)閉瀏覽器肯定是必須的,所以要想不在每個(gè)case里重復(fù)的寫這些動(dòng)作,我們就需要一個(gè)測(cè)試用例的主類用以被case繼承,我把這個(gè)主類單獨(dú)的放置到了一個(gè)位置maincase,于是架構(gòu)圖:
—————testcase
—————testsuite
—————maincase
我們?cè)賮?lái)想一下case里更具體的問題吧,比如說(shuō),我們可能需要一個(gè)(除開瀏覽器操作外的)工具集用以對(duì)case提供支持,包括發(fā)送Email,打開windows窗口選擇文件還有其他可能遇到的奇奇怪怪的事情,我們給這個(gè)部分留了一個(gè)util的位置,再來(lái)看看架構(gòu)圖:
—————testcase
—————testsuite
—————maincase
—————util
再想想,如果我們發(fā)送email,那當(dāng)然是要先生成測(cè)試報(bào)告,測(cè)試?yán)镉龅絾栴}的話,最好可以有截圖用來(lái)看看當(dāng)時(shí)為什么出錯(cuò)了,那么我們各留一個(gè)位置給報(bào)告和截圖:
—————testcase
—————testsuite
—————maincase
—————util
—————testreport
—————sreenshot
接下來(lái),處理一下我們的元素存放位置,元素的管理是UI自動(dòng)化里的重要點(diǎn),如果不做到case和元素分離的話,維護(hù)用例將會(huì)變得非常困難,每次迭代只要元素變動(dòng)了,你就得一個(gè)一個(gè)case的改,這里我們把元素集中到一個(gè)config里,稍后在具體編寫階段告訴大家如何存儲(chǔ),這里先分一個(gè)config的位置給元素:
—————testcase
—————testsuite
—————maincase
—————util
—————testreport
—————sreenshot
—————config
最后,如果我們希望我們的用例足夠簡(jiǎn)潔的話,我們就應(yīng)該把那些常用的操作封裝起來(lái),這里的封裝分為兩個(gè)層面封裝,第一是對(duì)常用基礎(chǔ)操作的封裝,第二是對(duì)常用業(yè)務(wù)操作的封裝。
解釋一下的話,就是我們首先把基礎(chǔ)的操作封裝到一起,例如,尋找元素,如果我們想統(tǒng)一使用隱式等待(不明白的話后續(xù)篇章會(huì)介紹到)去查找元素的話,就需要把selenium里的find方法封裝一下,這種是對(duì)原先的基礎(chǔ)操作的封裝;
而比如說(shuō),我們寫case的時(shí)候發(fā)現(xiàn),很多個(gè)case都會(huì)有一個(gè)同樣的跳轉(zhuǎn)路徑,都是通過(guò)點(diǎn)擊xx,再點(diǎn)擊xx到達(dá)這個(gè)頁(yè)面,我們就把這個(gè)操作路徑封裝了給我們的case使用,避免case里重復(fù)的寫這些路徑,這層封裝是對(duì)復(fù)用性高的業(yè)務(wù)邏輯操作的封裝。
我們給這兩層封裝留個(gè)位置operate:
—————testcase
—————testsuite
—————maincase
—————util
—————testreport
—————sreenshot
—————config
—————operate
這樣目前來(lái)看,我們的架構(gòu)圖大體就畫完了,剩下的如果有遺漏再開發(fā)過(guò)程里修復(fù)吧,我們看看最終的項(xiàng)目架構(gòu)(目前還是空的):
總結(jié)
以上是生活随笔為你收集整理的从零开始搭建一个简单的ui自动化测试框架02(pytest+selenium+allure)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 固定列表的表格
- 下一篇: tensorflow无法检测到GPU设备