天天看點

怎樣從0開始搭建一個測試架構_0——總章

一、搭建架構的準備

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接口測試​​