一、搭建架構的準備
1、這個“從0開始”并不是說你不需要任何基礎知識,而是指架構從無到有的過程,要開始搭建還是需要一定基礎
2、請確定你已經掌握了基本的Python文法
3、如果你要搭建UI架構,請確定你已經掌握了Selenium的基本用法
二、思考:我們需要一個什麼樣的架構
既然要搭一個架構,我們首先得弄明白我們需要一個什麼樣的架構,這個架構要支援什麼功能?
架構主要的作用就是幫助我們編寫更加簡單而且好維護的用例,讓我們把主要精力放在測試用例的設計上,那麼我們就需要把所有額外的東西抽象出來作為架構的部分。
那麼,額外的東西是什麼?
1、 日志以及報告
2、日志級别、URL、浏覽器類型等基本配置
3、參數化
4、 公共方法
三、搭建架構目錄結構
搭建的架構大緻如下,關于架構的解釋說明請看:
Test_framework
|--config(配置檔案)
|--data(資料檔案)
|--drivers(驅動)
|--log(日志)
|--report(報告)
|--test(測試用例)
|--utils(公共方法)
|--ReadMe.md(加個說明性的檔案,告訴團隊成員架構需要的環境以及用法)
簡單介紹一下:
1、config層,放配置檔案,把所有的項目相關的配置均放到這裡,用Python支援較好的配置檔案格式如ini或yaml等進行配置。實作配置與代碼分離。
2、data層,放資料檔案,可以把所有的testcase的參數化相關的檔案放到這裡,一般可采用xlsx、csv、xml等格式。實作資料與代碼分離。
3、drivers層,放所需的驅動,如Chromedriver、IEDriverServer等。
4、log層,所有生成的日志均存放在這裡,可将日志分類,如運作時日志test log,錯誤日志error log等。
5、report層,放程式運作生成的報告,一般可有html報告、excel報告等。
6、test層,放所有測試相關的檔案,如case——測試用例、common——項目相關的抽象通用代碼、page——頁面類(Page-Object思想)、suite——組織的測試套件。
7、 utils層,所有的支撐代碼都在這裡,包括讀取config的類、寫log的類、讀取excel、xml的類、生成報告的類(如HTMLTestRunner)、資料庫連接配接、發送郵件等類和方法,都在這裡。
四、Python 2 or 3? Selenium 2 or 3?
1、Python 3的使用越來越多,而且3的unittest中帶有subTest,能夠通過子用例實作參數化。而用2的話需要unittest2或其他的庫來實作,是以我們這裡選用Python 3。
2、Selenium我用的版本是:
jinjideleishen:~ leiyuxing$ pip show selenium
Name: selenium
Version: 3.141.0
五、配置檔案
配置檔案我們有多種選擇:ini、yaml、xml、properties、txt、py等,這裡我們選擇yaml。
是以我們在config檔案夾裡建立config.yml檔案,在utils裡建立一個config.py檔案讀取配置,内容暫且不管。
六、簡單地對之後的内容勾畫一下
1、我與以往的部落客不同,我首先是建立好HTML的報告模版,這個部落客修改了網上原有的HTMLTestRunner,改為中文并美化,然後修改其支援PY3。你可以直接拿去用。——怎樣從0開始搭建一個測試架構_1——HTMLTestRunner報告
2、然後我們要把配置抽出來,用yaml檔案放配置。是以我們要在config層添加配置檔案config.yml,在utils層添加file_reader.py與config.py來管理。——怎樣從0開始搭建一個測試架構_2——配置
3、然後我們将python自帶的logging子產品封裝了一下,從配置檔案讀取并設定固定的logger。在utils中建立了log.py。——怎樣從0開始搭建一個測試架構_3——日志
4、然後封裝xlrd子產品,讀取excel,實作用例的參數化。——怎樣從0開始搭建一個測試架構_4——參數化
5、然後我們給架構添加了發送郵件報告的能力。在utils中添加了mail.py。——怎樣從0開始搭建一個測試架構_5——郵件
6、然後我們将測試用例用Page-Object思想進行封裝,進一步劃分test層的子層。——怎樣從0開始搭建一個測試架構_6——PageObject
7、接下來為了接口測試封裝client類。在utils中添加了client.py。——怎樣從0開始搭建一個測試架構_7——接口
8、然後添加了一個簡單的自定義斷言,在utils中添加assertion.py,可用同樣的方法自行擴充。——怎樣從0開始搭建一個測試架構_8——斷言
9、接下來我們為了抽取響應結果,用JMESPath封裝Extractor,在utils中添加extractor.py。——怎樣從0開始搭建一個測試架構_9——抽取器
10、然後是生成器。為我們自動生成固定類型的測試資料。utils下建立了generator.py。——怎樣從0開始搭建一個測試架構_10——資料生成器(全網最全)
11、接着為了一些項目中的支援方法,如加密、簽名、排序等,建立支援庫support.py。——怎樣從0開始搭建一個測試架構_11——支援方法
12、然後針對一些特殊的接口做一個方法的封裝,接口測試時,除了常見的http接口,還有一種比較多見,就是socket接口,我們可以用Python自帶的socket庫進行socket接口測試。——怎樣從0開始搭建一個測試架構_12——socket接口測試