在開始之前权薯,請(qǐng)讓我先聲明幾點(diǎn):
這個(gè)“從0開始”并不是說你不需要任何基礎(chǔ)知識(shí)姑躲,而是指框架從無到有的過程,要開始搭建還是需要一定基礎(chǔ)
請(qǐng)確保你已經(jīng)掌握了基本的Python語法
如果你要搭建UI框架盟蚣,請(qǐng)確保你已經(jīng)掌握了Selenium的基本用法
這個(gè)框架主要面向剛剛會(huì)寫腳本但是不知道該如何走向下一步的同學(xué)黍析,歡迎吐槽,但最好帶上改進(jìn)建議
思考:我們需要一個(gè)什么樣的框架
既然要搭一個(gè)框架屎开,我們首先得弄明白我們需要一個(gè)什么樣的框架阐枣,這個(gè)框架要支持什么功能?
框架主要的作用就是幫助我們編寫更加簡(jiǎn)單而且好維護(hù)的用例奄抽,讓我們把主要精力放在測(cè)試用例的設(shè)計(jì)上蔼两,那么我們就需要把所有額外的東西抽象出來作為框架的部分宪卿。
那么半等,額外的東西是什么诗越?
日志以及報(bào)告
日志級(jí)別区端、URL芭碍、瀏覽器類型等基本配置
參數(shù)化
公共方法
搭建框架目錄結(jié)構(gòu)
現(xiàn)在我們很容易就把框架的結(jié)構(gòu)搭建好了:
也可以參照這篇目錄結(jié)構(gòu)瓣蛀,都是類似的:簡(jiǎn)單分享一個(gè)輕量級(jí)自動(dòng)化測(cè)試框架目錄結(jié)構(gòu)設(shè)計(jì)
接下來有一些選擇題要做了:
Python 2 or 3? Selenium 2 or 3?
Python 3的使用越來越多官脓,而且3的unittest中帶有subTest仿贬,能夠通過子用例實(shí)現(xiàn)參數(shù)化。而用2的話需要unittest2或其他的庫來實(shí)現(xiàn)品抽,所以我們這里選用Python 3储笑。
Selenium 3剛發(fā)布正式版不久,一些功能driver還沒來得及跟上圆恤,尤其是geckodriver突倍,所以選擇Selenium 2(注意PY3的話要選擇SE2.53.1)。
環(huán)境選擇其實(shí)影響不大盆昙,你也可以選擇你自己習(xí)慣的環(huán)境羽历。
配置文件
配置文件我們有多種選擇:ini、yaml淡喜、xml秕磷、properties、txt炼团、py等
鑒于我之前寫過一篇yaml的博文澎嚣,我們這里就用yaml吧。
所以我們?cè)赾onfig文件夾里創(chuàng)建config.yml文件瘟芝,在utils里創(chuàng)建一個(gè)config.py文件讀取配置易桃,內(nèi)容暫且不管。
簡(jiǎn)單的對(duì)之后的內(nèi)容勾畫一下
1.首先我們要把配置抽出來锌俱,用yaml文件放配置晤郑。所以我們要在config層添加配置文件config.yml,在utils層添加file_reader.py與config.py來管理贸宏≡烨蓿——怎樣從0開始搭建一個(gè)測(cè)試框架(1)
2.然后我們將python自帶的logging模塊封裝了一下,從配置文件讀取并設(shè)置固定的logger吭练。在utils中創(chuàng)建了log.py诫龙。——怎樣從0開始搭建一個(gè)測(cè)試框架(2)
3.然后封裝xlrd模塊线脚,讀取excel赐稽,實(shí)現(xiàn)用例的參數(shù)化』虢模——怎樣從0開始搭建一個(gè)測(cè)試框架(3)
4.然后是生成HTML測(cè)試報(bào)告姊舵,這個(gè)博主修改了網(wǎng)上原有的HTMLTestRunner,改為中文并美化寓落,然后修改其支持PY3括丁。你可以直接拿去用×嫜。——怎樣從0開始搭建一個(gè)測(cè)試框架(4)
5.然后我們給框架添加了發(fā)送郵件報(bào)告的能力史飞。在utils中添加了mail.py尖昏。——怎樣從0開始搭建一個(gè)測(cè)試框架(5)
6.然后我們將測(cè)試用例用Page-Object思想進(jìn)行封裝构资,進(jìn)一步劃分test層的子層抽诉。——怎樣從0開始搭建一個(gè)測(cè)試框架(6)
7.接下來為了接口測(cè)試封裝client類吐绵。在utils中添加了client.py迹淌。——怎樣從0開始搭建一個(gè)測(cè)試框架(7)
8.然后添加了一個(gè)簡(jiǎn)單的自定義斷言己单,在utils中添加assertion.py唉窃,可用同樣的方法自行擴(kuò)展。——怎樣從0開始搭建一個(gè)測(cè)試框架(8)
9.接下來我們?yōu)榱顺槿№憫?yīng)結(jié)果纹笼,用JMESPath封裝Extractor纹份,在utils中添加extractor.py。——怎樣從0開始搭建一個(gè)測(cè)試框架(9)
10.然后是生成器廷痘。為我們自動(dòng)生成固定類型的測(cè)試數(shù)據(jù)蔓涧。utils下創(chuàng)建了generator.py。——怎樣從0開始搭建一個(gè)測(cè)試框架(10)
11.最后為了一些項(xiàng)目中的支持方法牍疏,如加密蠢笋、簽名等,創(chuàng)建支持庫support.py鳞陨。——怎樣從0開始搭建一個(gè)測(cè)試框架(11)
整個(gè)流程下來我們一個(gè)簡(jiǎn)單的框架就像模像樣了,在此基礎(chǔ)上可繼續(xù)完善瞻惋,實(shí)際用在項(xiàng)目中也沒有什么問題厦滤,再簡(jiǎn)單結(jié)合Jenkins部署起來,定期或每次代碼提交后可自動(dòng)運(yùn)行測(cè)試歼狼,直接把測(cè)試報(bào)告發(fā)送到項(xiàng)目成員手中掏导,妥妥的!接下來就跟我一塊學(xué)習(xí)吧羽峰。
所有的代碼我都放到了公眾號(hào) 和頭條號(hào)傳送趟咆,可以自己下載去學(xué)習(xí)。
有什么好的建議或者問題梅屉,可以留言或者加QQ群:330374464?
作者:西邊人
頭條號(hào)值纱、公眾號(hào)請(qǐng)搜索(軟件測(cè)試資源站)
關(guān)注后私信回復(fù) 入群,加入自學(xué)社群聯(lián)盟坯汤。