Web自動化測試項目(七)日誌

一、日誌作用

  • 調試程序
  • 瞭解系統程序運行的情況,是否正常
  • 系統程序運行故障分析與問題定位
  • 用來做用戶行爲分析和數據統計

二、爲項目添加日誌

└── utils
    ├── log_utils.py
    └── se_utils.py

log_utils.py

import logging.handlers
import time

class GetLogger():
    logger = None

    @classmethod
    def get_logger(cls):
        if cls.logger == None:
            # 日誌器實例
            cls.logger = logging.getLogger()

            # 設置日誌級別
            cls.logger .setLevel(level=logging.INFO)

            # 控制檯處理器實例
            ch = logging.StreamHandler()

            # 以時間切分日誌文件處理器
            filename = '../logs' + '/' + time.strftime('%Y%m%d') + 'WebUiTestLog.log'
            th = logging.handlers.TimedRotatingFileHandler(filename=filename, when='midnight', interval=1,
                                                           backupCount=30, encoding='utf-8')

            # 設置日誌格式
            fmt = "%(asctime)s %(levelname)s [%(name)s] [filename: %(filename)s - moudle: %(module)s - func: %(funcName)s  %(lineno)d line] - %(message)s"
            fm = logging.Formatter(fmt)

            # 將日誌格式添加到處理器
            ch.setFormatter(fm)
            th.setFormatter(fm)

            # 將處理器添加到日誌器
            cls.logger .addHandler(ch)
            cls.logger .addHandler(th)
        return cls.logger

se_utils.py 添加瀏覽器啓動和關閉的日誌

from selenium import webdriver

from utils.log_utils import GetLogger

logger = GetLogger.get_logger()

class Driver():
    _driver = None

    @classmethod
    def get_driver(cls, browser_name='Chrome'):
        if cls._driver == None:
            logger.info('正在打開瀏覽器.....')
            if browser_name == 'Chrome':
                cls._driver = webdriver.Chrome()
            elif browser_name == 'Firefox':
                cls._driver = webdriver.Firefox()
            elif browser_name == 'Safari':
                cls._driver == webdriver.Safari()
            elif browser_name == 'Opera':
                cls._driver == webdriver.Opera()
            elif browser_name == 'edge':
                cls._driver == webdriver.Edge()
            elif browser_name == 'Ie':
                cls._driver == webdriver.Ie()
            else:
                raise NameError(
                    "Not found %s browser,You can enter 'Chrome', 'Firefox', 'Ie', 'Edge', 'Safari',Opera" % browser_name)
            logger.info('打開{}瀏覽器'.format(cls._driver.name))

        return cls._driver

    @classmethod
    def quit_driver(cls):
        if cls._driver:
            logger.info('正在關閉{}瀏覽器'.format(cls._driver.name))
            cls._driver.quit()
            logger.info('已關閉{}瀏覽器'.format(cls._driver.name))

        cls._driver = None

base_page.py 添加定位信息的日誌

    def find_element(self, locator):
        try:
            WebDriverWait(driver=self.driver, timeout=TIMEOUT, poll_frequency=POLL_FREQUENCY).until(
                EC.visibility_of_element_located(locator))
            return self.driver.find_element(*locator)
        except Exception as e:
            msg = "元素定位超時 {}: {}".format(locator[0], locator[-1])
            logger.error(msg)
            raise TimeoutException(msg)

更多日誌信息請根據例子麻煩自行添加




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章