Python封装logging日志模块,与selenium连用

推荐一篇博主博客:https://www.cnblogs.com/CJOKER/p/8295272.html

它里面讲述了日志的显示顺序、如何在控制台进行显示,以及文件配置都挺详细的,可以先看看推荐的内容  我这边按项目的情况对使用的日志模块进行了一个封装

1.日志文件的配置 Logger.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
################################################
###########propagate 是否继承父类的log信息,0:否
[loggers]
keys=root,example01,example02   #3个格式的日志
[logger_root]
level=DEBUG     #打印日志级别,从高到低
handlers=hand01,hand02
[logger_example01]
handlers=hand01,hand02 #用哪个日志处理程序来打日志(怎么打日志:1)打在屏幕  2 打在文件里 3)打在可以回滚的文件里)
qualname=example01
propagate=0
[logger_example02]
handlers=hand01,hand03
qualname=example02
propagate=0
###############################################
[handlers]
keys=hand01,hand02,hand03
[handler_hand01]
class=StreamHandler  #用StreamHandler(流模式)打印
level=DEBUG   #打印模式
formatter=form01    #打印格式
args=(sys.stderr,)
[handler_hand02]
class=FileHandler  #文件模式
level=DEBUG
formatter=form01
args=('e:\\AutoTestLog.log''a')  #存储的位置
[handler_hand03]     #回滚日志
class=handlers.RotatingFileHandler
level=INFO
formatter=form01
args=('e:\\AutoTestLog.log''a'10*1024*10245)
###############################################
[formatters]
keys=form01,form02
[formatter_form01]
format=%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s
datefmt=%Y-%m-%%H:%M:%S
[formatter_form02]
format=%(name)-12s%(levelname)-8s %(message)s
datefmt=%Y-%m-%%H:%M:%S
# asctime:时间  filename:打印日志的文件名  lineno:行号  levelname:日志级别 message:具体你打印的日志消息#注 上面的文字是我做的注释,需要运行时需要去除他们 

二:引用封装的日志文件Log.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#encoding=utf-8
import logging.config
import logging
 
logging.config.fileConfig("Logger.conf")
logger = logging.getLogger("example01")
 
#日志配置文件:多个logger,每个logger,指定不同的handler
#handler:设定了日志输出行的格式
#handler:以及设定写日志到文件(是否回滚)?还是到屏幕
#handler:还定了打印日志的级别。
 
def debug(message):
    # 打印debug级别的日志方法
   logger.debug(message)
 
def warning(message):
    # 打印warning级别的日志方法
    logger.warning(message)
 
def info(message):
    # 打印info级别的日志方法
    logger.info(message)
 
def error(message):
    # 打印error级别的日志方法
    logger.error(message)
if __name__=="__main__":
    debug("hi")
    info("info hi ")
    warning("warning hello")
    error("error hello")

3.selenium中使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#encoding=utf-8
from selenium import webdriver
import unittest
import logging
 
# 从当前文件所在目录中导入Log.py文件中所有内容
from logdemo.Log import *
 
class TestSoGouByObjectMap(unittest.TestCase):
 
    def setUp(self):
        # 启动浏览器
        self.driver = webdriver.Chrome(executable_path="D:\\driver\\chromedriver")
 
    def testSoGouSearch(self):
        debug(u"============== 搜索 ==============")
        url = "http://www.baidu.com"
 
        self.driver.get(url)
        debug(u"访问sogou首页")
        self.driver.find_element_by_id("kw").send_keys(u"肺炎 ")
        warning(u"在输入框中输入搜索关键字串“肺炎”"+self.driver.find_element_by_id("kw").get_attribute("value"))
        self.driver.find_element_by_id("su").click()
        info(u"点击搜索按钮")
        debug(u"========== 测试用例执行结束 ==========")
 
    def tearDown(self):
        # 退出IE浏览器
        self.driver.quit()
 
if __name__ == '__main__':
    unittest.main()

 

 

 

 

posted @ 2020-09-23 19:11  IT测试老兵  阅读(404)  评论(0编辑  收藏  举报
作者:测试老兵
出处:https://www.cnblogs.com/fighter007/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。