Python + Selenium自动化测试 -- 自定义Log类

本文用日志来记录我们测试脚本做的事情,其实最好的办法是写事件监听(对于小白的我,暂时不会,先从日志学起)。
下面写一个日之类,用来输出不同级别的日志信息到本地文件夹下的日志文件里。
目标输出效果:
这里写图片描述
解决思路:
1. 封装Log类,类名为Logger;
2. 在Logger类中创建记录器logger;
3. 创建一个handler,用于写入日志文件,写到磁盘;再创建一个handler,用于输出到控制台;
4. 定义两个handler的输出格式,并且给logger添加handler
5. 创建一个测试类TestMyLog,编写代码使用Log类,记录日志

步骤:
1. 在项目下创建一个logs文件夹,用于存储log日志文件;
2. 创建logger文件,编码如下:

# logging模块支持我们自定义封装一个新日志类
import logging
import os.path
import time


class Logger(object):

    def __init__(self, logger):
        """ 指定保存日志的文件路径,日志级别,调用文件 将日志存入到指定的文件中 :param logger: """
        # 创建一个logger(记录器)
        # 日志记录的工作主要由Logger对象来完成。在调用getLogger时要提供Logger的名称(注:多次使用相同名称 来调用getLogger,返回的是同一个对象的引用。)
        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.dirname(os.getcwd()) + '/logs/'
        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
  1. 创建一个测试类,代码如下:
import time
from selenium import webdriver
from test.logger import Logger


mylogger = Logger(logger='TestMyLog').getlog()


class TestMyLog(object):

    def print_log(self):

        driver = webdriver.Chrome()
        mylogger.info("打开浏览器")
        driver.maximize_window()
        mylogger.info("最大化浏览器窗口.")
        driver.implicitly_wait(8)

        driver.get("https://www.baidu.com")
        mylogger.info("打开百度首页.")
        time.sleep(1)
        mylogger.info("暂停一秒.")
        driver.quit()
        mylogger.info("关闭并退出浏览器.")

testlog = TestMyLog()
testlog.print_log()

运行结果:
1)logs文件下生成一个.log文件
这里写图片描述
2)控制台输出如下:
Python + Selenium自动化测试 -- 自定义Log类_第1张图片

详细参考: Python 模块学习 logging

你可能感兴趣的:(自动化测试)