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代碼如下:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBHL0FWby9mZvwVZnFWbp1zczV2YvJHctM3cv1Ce-ITV61EejRkWxUFVPNTRH5EMNdlW0UkeZ1mUE10dJJjTsZFRaJTWE9UNZpHTsR2VZRHbXxkakd0Y2VlMalnRHJmdwIjYqVzQjBjRHRmeC5GT1E0MMZ3bENGMShUYvwlbj5yZtlmbkN3YuQnclZnbvN2Ztl2Lc9CX6MHc0RHaiojIsJye.jpg)
(2)get_driver
根據測試場景檔案确定調用何種浏覽器,并啟動浏覽器。
(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代碼如下:
(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代碼如下:
上述代碼并未包括子產品引入部分的代碼,完整module.py代碼請聯系彙智妹領取。
10、tools
tools目錄建立時選擇“Directory”格式。存放浏覽器驅動檔案,一般可将firefox、ie及chrome的驅動檔案放在此處,路徑與common目錄的浏覽器啟動函數browserlauncher所定義的路徑相同。
通過絕對路徑調用驅動檔案的代碼如下:
對于firefox及chrome浏覽器可采用類似的方式處理,但是直接引用絕對路徑的方法筆者感覺不穩定,建議最好的方法是将所需的浏覽器驅動檔案放在python的根目錄下,即根據《附錄五Selenium開發環境配置手冊》的方法操作。
11、run.py
內建Pyton語言unittest方法,進而便于測試場景的管理,run.py是ECShop工程腳本執行的入口。
此處将使用者注冊、使用者登陸測試場景統一設定在test_Ecshop函數中并調用執行,根據函數的傳回值,判斷測試場景執行的成功與否,然後通過HTMLTestRunner方法,将測試結果以HTML格式輸出。
通過上述步驟,ECShop自動化測試架構設計并開發完成。