这个项目运行成功,设计到的功能点:本文介绍如何写一个Python日志类,
用来输出不同级别的日志信息到本地文件夹下的日志文件里。为什么需要日志输出呢,
我们需要记录我们测试脚本到底做了什么事情,最好的办法是写事件监听
生成的日志文件格式是 年月日时分秒.log
自定义日志类封装如下:logger.py,新建在test包下
testbaidu.py 是测试用例,同时也引用了logger.py文件
遇到的问题:webdriver.Firefox() 一定要大写F
def setUp 一定要U大写,p小写
运行的文件:testbaidu.py
testbaidu.py 文件内容
# coding=utf-8
import unittest
from selenium import webdriver
import time
from test.logger import Logger
mylogger = Logger(logger='testbaidu').getlog()
class BaiduSearch(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Firefox()
self.driver.maximize_window()
self.driver.implicitly_wait(8)
self.driver.get("https://www.baidu.com")
mylogger.info("打开浏览器") #这个就是监听作用
def tearDown(self):
self.driver.implicitly_wait(8)
self.driver.quit()
mylogger.info("关闭浏览器")
def test_baidu_search(self):
self.driver.find_element_by_id('kw').send_keys('selenium')
mylogger.info("输入框输入selenium")
time.sleep(2)
self.driver.find_element_by_id('su').click()
mylogger.info("点击搜索按键")
time.sleep(2)
if __name__ == '__main__':
unittest.main()
logger.py 文件内容
# coding=utf-8
# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行
# 3.导入模块
import logging
import os.path
import time
class 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()))
print(os.getcwd())
log_path = (os.path.dirname(os.getcwd() + '\\Logs\\'))
print(log_path)
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
目录结构