Selenium Page Object 自動化測試框架-common設計
來自專欄 軟體測試自留地
common
將測試框架過程中可能需要用到的功能單獨設計為公共函數,存放在common目錄中,避免代碼設計冗餘。common目錄創建時使用「Python Package」,不使用「Directory」。
Python Package:存放腳本類資源文件,便於其他腳本調用其中的函數功能。創建該類型目錄時,會自動生成空文件__init__.py。
Directory:存放資源類文件,一般不涉及腳本文件。
選中「ecshop」工程名稱,右鍵,「New」-「Python Package」,出現下圖
輸入Package名稱,如「common」,點擊【OK】完成創建。
common目錄中根據敏捷開發團隊的自動化測試框架設置,主要包含配置文檔讀取函數、瀏覽器啟動函數、截圖函數、日誌生成函數、獲取URL函數、HTML報告輸出函數等。
- 配置文檔讀取函數
函數文件名:readconfig.py。將測試過程中需要的基本信息,利用ini格式的文件保存,根據框架需要載入對應數據,該函數可擴展,本次項目並未涉及,大家可自行調整。示例代碼如下:
import os
import configparserdef ReadConfig(name): cf = configparser.ConfigParser() # file_path = os.path.dirname(os.getcwd()) + /config/config.ini parpath=os.path.abspath(.) parpath=os.path.dirname(parpath)configPath = parpath + \config\config.ini
cf.read(configPath) #獲取配置文件中BrowserName對應的值 browserconfig = cf.get(browser,name) return browserconfig2.截圖函數
函數文件名:cappic.py。如有需要,可將測試過程中需截圖的地方截圖,便於後期的缺陷、問題定位。代碼如下:
import logging
import os.pathimport timedef Cappic(driver):
rq = time.strftime(%Y%m%d%H%M, time.localtime(time.time())) pic_path = os.path.abspath(.) + \picture\ pic_name = pic_path + rq + .png driver.get_screenshot_as_file(pic_name) return pic_name3.日誌生成函數
函數文件名:loggen.py。將執行過程中需監控的步驟通過日誌輸出的方法,保存在工程目錄下的logs中。代碼如下:
# _*_ coding: utf-8 _*_
import loggingimport os.path
import timeclass Logger(object): def __init__(self, logger): 指定保存日誌的文件路徑,日誌級別,以及調用文件 將日誌存入到指定的文件中 # 創建一個logger self.logger = logging.getLogger(logger)self.logger.setLevel(logging.DEBUG)
# 創建一個handler,用於寫入日誌文件 rq = time.strftime(%Y%m%d%H%M, time.localtime(time.time())) log_path =os.path.abspath(.)+ \logs\ #print(log_path) log_name = log_path + rq + .log fh = logging.FileHandler(log_name) fh.setLevel(http://logging.INFO) # 再創建一個handler,用於輸出到控制台 ch = logging.StreamHandler()ch.setLevel(http://logging.INFO)
# 定義handler的輸出格式 formatter = logging.Formatter(%(asctime)s - %(name)s - %(levelname)s - %(message)s) fh.setFormatter(formatter) ch.setFormatter(formatter) # 給logger添加handler self.logger.addHandler(fh) self.logger.addHandler(ch) def getlog(self): return self.logger4.獲取URL函數
函數文件名:geturl.py。因ECShop登陸、註冊功能頁面不在主頁面,需調整到特定頁面,因此需將URL提取出再根據需要組合。提取URL前綴代碼如下:
def geturl(url):
urls=url.split(/) url=urls[0]+//+urls[2]+/+urls[3]+/ return url5.HTML報告輸出函數
函數文件名:HTMLTestRunner.py。如有需要,可集成HTML報告輸出函數,將測試結果以HTML格式輸出,大家可自行下載HTML報告處理函數HTMLTestRunner.py,添加在common目錄下。
推薦閱讀:
※selenium 3.x自動化測試環境搭建
※工具應用:Robot Framework-安裝配置與基礎使用
※漫談自動化測試
※使用UI Automator實現Android UI的自動化測試
※Selenium Page Object 自動化測試框架-Page Object設計