logging日志模块是python自带的内置方法,我们做自动化的时候,如何利用logging模块,进行日志的记录。
先来了解一下logging模块:
日志五个级别:
1,debug 调试信息
2,info 关键信息
3,warning 警告信息
4,error 错误信息
5,critical 严重问题信息
日志四大组件:
Logger 调试器(提供给应用程序的入口)
Handler 处理器
Formatter 格式器(输出的格式)
Filtter 过滤器
如何编写基础的loger日志公共方法:
import logging
import time
class Demo():
def getlog(self):
logDir = r'./testData\{}.log'.format(time.strftime('%Y-%m-%d',time.localtime()))
logger = logging.getLogger('logger')
logger.setLevel(logging.DEBUG)
if not logger.handlers: #处理日志重复问题(存在logger调试器将不添加下面的处理器等)
sh = logging.StreamHandler() #处理器
filepath = logging.FileHandler(filename=logDir,encoding='utf-8')
LOG_FORMATE = '%(asctime)s - %(filename)s - %(levelname)s - %(message)s' # p配置日志信息
DATE_FORMATE = '%Y-%m-%d %X' # 配置日志时间格式
formater = logging.Formatter(fmt=LOG_FORMATE,datefmt=DATE_FORMATE)
sh.setFormatter(formater)
filepath.setFormatter(formater)
logger.addHandler(sh)
logger.addHandler(filepath)
return logger
上面我们进行了日志方法的封装,只要在自动化中引用此模块就可进行简单的日志处理,并记录在日志文件内。
import unittest
from selenium import webdriver
from selenium.webdriver.common.by import By
from Learn.pythonFirst.pythonFile.Logerror import Demo
class python(unittest.TestCase):
def findele(self,*args):
try:
Demo().getlog().info('通过元素定位方法:'+args[0]+'定位元素:'+args[1])
return self.driver.find_element(*args)
except Exception as e:
Demo().getlog().error('定位元素错误'+args[1]+e)
@classmethod
def setUpClass(cls):
cls.driver = webdriver.Chrome()
driver = cls.driver
driver.maximize_window()
driver.get('http://39.107.96.138:3000')
@classmethod
def tearDownClass(cls):
driver = cls.driver
driver.quit()
def test_1001(self):
self.findele(By.XPATH,'//*[@id="login"]').send_keys('user')
self.findele(By.XPATH,'//*[@id="passwd"]').send_keys('123456')
self.findele(By.XPATH,'//*[@id="kw"]').click()
if __name__ == '__main__':
unittest.main()
以上是我们进行了logging模块与自动化的相结合,进行了基础的日志问题记录,我们需要记录那些问题就在方法中调用logger即可。