Python+Selenium中级篇之8-Python自定义封装一个简单的Log类
来源:互联网 发布:被掩埋的巨人 知乎 编辑:程序博客网 时间:2024/05/17 22:51
本文介绍如何写一个Python日志类,用来输出不同级别的日志信息到本地文件夹下的日志文件里。为什么需要日志输出呢,我们需要记录我们测试脚本到底做了什么事情,最好的办法是写事件监听。这个事件监听,对我们现在来说,还是有点复杂去理解,所以我这里,选择封装一个简单的日志类,同样达到这个效果。
我们大概需要如下日志输出效果:
问题分析:
我们需要封装一个简单的日志类,主要有以下内容:
1. 生成的日志文件格式是 年月日时分秒.log
2. 生成的xxx.log文件存储在项目根目录下Logs文件夹下
3. 这个日志类,支持INFO,ERROR两种日志级别
4. 日志里,每行日志输出,如上图,时间日期+执行类名称+日志级别+日志描述
解决问题思路:
1. 在根目录下新建一个Logs的文件夹,如何获取这个Log的相对路径,前面介绍过。
2. 日志的保存命名,需要系统时间,前面也介绍过时间格式化输出
3. Python中有一个logging模块来支持我们自定义封装一个新日志类。
4. 在脚本里,初始化一个日志类的实例对象,然后去控制输出INFO还是ERROR日志信息。
自定义日志类封装如下:logger.py,新建在test包下
我们大概需要如下日志输出效果:
问题分析:
我们需要封装一个简单的日志类,主要有以下内容:
1. 生成的日志文件格式是 年月日时分秒.log
2. 生成的xxx.log文件存储在项目根目录下Logs文件夹下
3. 这个日志类,支持INFO,ERROR两种日志级别
4. 日志里,每行日志输出,如上图,时间日期+执行类名称+日志级别+日志描述
解决问题思路:
1. 在根目录下新建一个Logs的文件夹,如何获取这个Log的相对路径,前面介绍过。
2. 日志的保存命名,需要系统时间,前面也介绍过时间格式化输出
3. Python中有一个logging模块来支持我们自定义封装一个新日志类。
4. 在脚本里,初始化一个日志类的实例对象,然后去控制输出INFO还是ERROR日志信息。
自定义日志类封装如下:logger.py,新建在test包下
# _*_ coding: utf-8 _*_import loggingimport os.pathimport timeclass Logger(object): def __init__(self, logger): """ 指定保存日志的文件路径,日志级别,以及调用文件 将日志存入到指定的文件中 :param 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.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新写一个测试日志类,相关代码如下:
# coding=utf-8import timefrom selenium import webdriverfrom test.logger import Loggermylogger = 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()在PyCharm里运行下这个测试类,会在根目录下的Logs文件下,新建一个日志文件,打开效果如文章开头的日志输出图。好了,关于自定义封装log类,自己好好去读下代码,理解下每行代码的意思,日志类的封装和调用就介绍到这里。
2 0
- Python+Selenium中级篇之8-Python自定义封装一个简单的Log类
- Python+Selenium中级篇之4-封装一个自己的类-浏览器引擎类
- Python+Selenium中级篇之9-把截图类方法封装到前面的BasePage.py
- Python+Selenium中级篇之1-Python IDE工具-PyCharm的安装和简单使用
- Python+Selenium中级篇之2-Python中类/函数/模块的简单介绍和方法调用
- Python+Selenium中级篇之3-二次封装Selenium中几个方法
- Python+Selenium中级篇之5-Python读取配置文件内容
- Python+Selenium中级篇之10-Python中的继承的使用
- 【技术人文】Python的一个LOG类封装
- Python 一个简单的MySQLdb封装类
- Python 一个简单的MySQLdb封装类
- Python+Selenium中级篇之0-设计自动化测试框架的前提技能介绍
- Python+Selenium中级篇之6-Python获取系统时间和格式化时间显示
- Python+Selenium中级篇之7-Python中字符串切割操作
- selenium+python 封装截图类
- Python selenium的简单使用
- Python+Selenium 简单的实例
- Python+Selenium框架设计篇之4-框架内封装日志类和浏览器引擎类
- Java7特性
- python基础之循环语句
- LiteOrm的使用
- 【LeetCode】557 Reverse Words in a String III
- 坚持#第165天~找回激情
- Python+Selenium中级篇之8-Python自定义封装一个简单的Log类
- Ubuntu下QT的安装详细教程
- 我的linux学习笔记(2)grub2 配置
- 《精彩绝伦的CSS》——提示(二)无单位的行高值
- IntelliJ IDEA 2017创建JavaEE项目
- 前端小白进阶Day2-HTML写一首诗并配图
- sql 双色球、游标生成以字段为名的表、职工信息
- # 0day漏洞_ETERNALBLUE_windows7X64
- vb.net 教程 5-13 图像处理之像素处理 4