Selenium Page Object 自動化測試框架-common設計

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報告輸出函數等。

  1. 配置文檔讀取函數

函數文件名:readconfig.py。將測試過程中需要的基本信息,利用ini格式的文件保存,根據框架需要載入對應數據,該函數可擴展,本次項目並未涉及,大家可自行調整。示例代碼如下:

import os

import configparser

def 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 browserconfig

2.截圖函數

函數文件名:cappic.py。如有需要,可將測試過程中需截圖的地方截圖,便於後期的缺陷、問題定位。代碼如下:

import logging

import os.path

import time

def 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_name

3.日誌生成函數

函數文件名:loggen.py。將執行過程中需監控的步驟通過日誌輸出的方法,保存在工程目錄下的logs中。代碼如下:

# _*_ coding: utf-8 _*_

import logging

import os.path

import time

class 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(logging.INFO)

# 再創建一個handler,用於輸出到控制台

ch = logging.StreamHandler()

ch.setLevel(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.logger

4.獲取URL函數

函數文件名:geturl.py。因ECShop登陸、註冊功能頁面不在主頁面,需調整到特定頁面,因此需將URL提取出再根據需要組合。提取URL前綴代碼如下:

def geturl(url):

urls=url.split(/)

url=urls[0]+//+urls[2]+/+urls[3]+/ return url

5.HTML報告輸出函數

函數文件名:HTMLTestRunner.py。如有需要,可集成HTML報告輸出函數,將測試結果以HTML格式輸出,大家可自行下載HTML報告處理函數HTMLTestRunner.py,添加在common目錄下。

推薦閱讀:

selenium 3.x自動化測試環境搭建
工具應用:Robot Framework-安裝配置與基礎使用
漫談自動化測試
使用UI Automator實現Android UI的自動化測試
Selenium Page Object 自動化測試框架-Page Object設計

TAG:Selenium | 自動化測試 |