selenium自动化测试脚本添加日志,生成logs文件并打印到控制台

python+unittest框架自动化测试脚本添加日志,生成logs文件并打印到控制台

添加日志主要原因是排查问题的时候,不是很方便,我们需要对程序的执行中错误的地方进行记录,以便我们更好的发现问题。

  • 封装Log类,类名为Logger,在Logger类中创建记录器logger, 创建一个handler,用于写入日志文件,写到磁盘;再创建一个handler,用于输出到控制台

步骤:

  1. 在项目下创建一个logs文件夹,用于存储log日志文件;
  2. 创建logger文件,编码如下:
#coding=utf-8
# 1.导包
import logging
import logging.handlers
import os


class Logger:
    loggers = None
    #获取日志对象
    def getLogger(self):
        # 2.创建日志器对象 / 设置日志级
        logger = logging.getLogger("root")
        logger.setLevel(level=logging.DEBUG)
        # 3.创建输出到控制台 / 文件
        ls = logging.StreamHandler()#按天分割,分割为5个

        #判断log文件夹是否存在,不存在即创建
        path = "./logs"
        if not os.path.exists(path):
            os.mkdir(path)

        lf = logging.handlers.TimedRotatingFileHandler(filename=r"logs/test.log",when="D",backupCount=5)
        # 4.创建格式化器
        fmt = '%(asctime)s %(levelname)s [%(name)s] [%(filename)s(%(funcName)s] [line:%(lineno)d] - %(message)s'
        formatter = logging.Formatter(fmt=fmt)
        # 5.将格式化器添加到处理器
        ls.setFormatter(formatter)
        lf.setFormatter(formatter)
        # 6.添加处理器到日志器(添加判断:如果已经有处理器,就不需要再添加)
        if not logger.handlers:
            logger.addHandler(ls)
            logger.addHandler(lf)
        self.loggers = logger
        return self.loggers

在Testcase调用Logger方法

# coding=utf-8
import time
from utils.DriverUtil import DriverUtil
from PageObject.BalanceOperationPage import OperationPage
import unittest
from common.Logger import Logger
from Method.loginMethod import TestLogin


class TestBalance(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        print("测试开始了...")
        # 驱动设置
        cls.driver = DriverUtil.getWebDriver()
        # 实例化
        cls.balance_page = OperationPage(cls.driver)
        cls.loggers = Logger().getLogger()

    # 将单个元素操作组成一个完整的动作,包含打开浏览器、输入用户名、密码、点击登录按钮等
    def user_balance_01(self, number, account, remark):
        TestLogin(self.driver).user_login('woke', '123456', '8888')
        self.loggers.info("Open the login page to complete the login->")
        time.sleep(1)
        self.balance_page.type_workOrder()
        self.loggers.info("Click to open the work order management module->")
        time.sleep(1)
        self.balance_page.type_balance()
        self.loggers.info("Click to open customer balance operation->")
        time.sleep(1)
        self.balance_page.type_userId(number)
        self.loggers.info("Enter user ID->")
        time.sleep(1)
        self.balance_page.type_account(account)
        self.loggers.info("Enter amount->")
        time.sleep(1)
        self.balance_page.type_reasonDrop()
        self.loggers.info("Click the operation reason drop-down box->")
        time.sleep(1)
        self.balance_page.type_offlineCard()
        self.loggers.info("Select operation reason type->")
        time.sleep(1)
        self.balance_page.type_dataDrop()
        self.loggers.info("Select date->")
        time.sleep(1)
        self.balance_page.type_today()
        self.loggers.info("Select date type->")
        time.sleep(1)
        self.balance_page.type_remark(remark)
        self.loggers.info("Enter comments->")
        time.sleep(1)
        self.balance_page.type_append()
        self.loggers.info("Click the Add button->")
        time.sleep(1)
        self.balance_page.type_confirm()
        self.loggers.info("Click OK->")
        time.sleep(1)

    # 用例1:增加余额操作
    def test_success_01(self):
        self.user_balance_01('2138', '100', 'test1')

    # 结束测试
    @classmethod
    def teardownClass(cls):
        time.sleep(2)
        cls.driver.quit()  # 退出浏览器
        print("测试结束了...")

if __name__ == '__main__':
    unittest.main()

1.控制台输出如下:
selenium自动化测试脚本添加日志,生成logs文件并打印到控制台_第1张图片
2.logs文件下生成一个.log文件
selenium自动化测试脚本添加日志,生成logs文件并打印到控制台_第2张图片

你可能感兴趣的:(UI自动化,python,selenium)