天天看點

Selenium自動化測試——巡檢腳本開發(下)

9、script

script目錄建立時選擇“Python Package”格式。測試引擎腳本存放路徑,如測試執行時驅動所有測試業務、測試用例的腳本檔案module.py。

module.py包含測試集讀取函數read_testsuite、擷取驅動函數get_driver、測試用例讀取函數read_testcase、測試執行函數exec_script。

(1)read_testsuite

read_testsuite函數負責解析測試場景檔案。os.path.abspath方法擷取目前腳本的執行路徑,以便于data目錄中的testsuite.xlsx測試場景檔案。通過引用os.path方式,增強了腳本的可移植性。

測試腳本代碼用for irow in range(2, ws.max_row + 1)循環疊代讀取測試場景檔案testsuite.xlsx中的每一行記錄,通過傳入的測試場景名稱,先判斷是否存在需測試的場景名稱,如果有則再用if testoperation=='do'判斷是否要擷取第三項中儲存的場景檔案名。

這裡關鍵字do代表的是執行,第二列的關鍵字可以根據将來的需要進一步拓展,設計更多的關鍵字。

read_testsuite代碼如下:

Selenium自動化測試——巡檢腳本開發(下)

(2)get_driver

根據測試場景檔案确定調用何種浏覽器,并啟動浏覽器。

Selenium自動化測試——巡檢腳本開發(下)

(3)exec_script

exec_script(testpage,teststep,testaction,testdata)功能是接受testpage,teststep,testdata三個參數,分别代表首頁類(對象),頁面元素,頁面資料。

代碼首先判斷首頁類(testpage)屬于那個類,這些類是已經實作的page object類。testpage類中有一個是浏覽器類,是Webdriver實作的。腳本分别實作了三個類的testpage判斷,分别是浏覽器、登陸頁面類、首頁頁面類三個類。

1)浏覽器

按照teststep判斷浏覽器類型,根據參數設定,生成firefox、IE及chrome的對象執行個體,最後請求testdata變量儲存的網頁連結。

2)登陸頁面類

執行teststep使用者名或密碼等動作,來執行頁面對象的操作,操作資料用傳入的testdata。

3)首頁頁面類

執行退出ECShop動作、查找頁面元素等涉及首頁面中相關元素的操作。

exec_script代碼如下:

Selenium自動化測試——巡檢腳本開發(下)

(4)read_testcase

read_testcase(testcasefile)是解析testcase檔案如login.xlsx,userregister.xlsx等,參數是測試用例檔案路徑。

for irow in range(2, ws.max_row + 1)是從第二行開始周遊,ws.max是獲得測試用例檔案有測試腳本指令的行數,參數從2開始,是因為第一行是标題,第二行開始才是正式腳本。

Testpage,teststep,testdata分别儲存了測試用例檔案(userregister.xlsx,login.xlsx)中的page,step,data資料,它們代表了頁面類,元素對象,元素資料。然後作為參數傳給exec_script函數。

read_testcase代碼如下:

Selenium自動化測試——巡檢腳本開發(下)

上述代碼并未包括子產品引入部分的代碼,完整module.py代碼請聯系彙智妹領取。

10、tools

tools目錄建立時選擇“Directory”格式。存放浏覽器驅動檔案,一般可将firefox、ie及chrome的驅動檔案放在此處,路徑與common目錄的浏覽器啟動函數browserlauncher所定義的路徑相同。

通過絕對路徑調用驅動檔案的代碼如下:

Selenium自動化測試——巡檢腳本開發(下)

對于firefox及chrome浏覽器可采用類似的方式處理,但是直接引用絕對路徑的方法筆者感覺不穩定,建議最好的方法是将所需的浏覽器驅動檔案放在python的根目錄下,即根據《附錄五Selenium開發環境配置手冊》的方法操作。

11、run.py

內建Pyton語言unittest方法,進而便于測試場景的管理,run.py是ECShop工程腳本執行的入口。

此處将使用者注冊、使用者登陸測試場景統一設定在test_Ecshop函數中并調用執行,根據函數的傳回值,判斷測試場景執行的成功與否,然後通過HTMLTestRunner方法,将測試結果以HTML格式輸出。

Selenium自動化測試——巡檢腳本開發(下)

通過上述步驟,ECShop自動化測試架構設計并開發完成。