Selenium2+python自动化72-logging日志使用

前言

脚本运行的时候,有时候不知道用例的执行情况,这时候可以加入日志,这样出现问题后方便查阅,也容易排查哪些用例执行了,哪些没有执行。

一、封装logging模块

1.关于logging日志的介绍,我这里就不详细讲解了,主要有两大功能,一个是控制台的输出,一个是保存到本地文件

2.先封装logging模块,保存到common文件夹命名为logger.py,以便于调用

 1 # coding:utf-8
 2 import logging,time,os
 3 # 这个是日志保存本地的路径
 4 log_path = "D:\\test\\newp\\report"
 5 class Log:
 6     def __init__(self):
 7         # 文件的命名
 8         self.logname = os.path.join(log_path, '%s.log'%time.strftime('%Y_%m_%d'))
 9         self.logger = logging.getLogger()
10         self.logger.setLevel(logging.DEBUG)
11         # 日志输出格式
12         self.formatter = logging.Formatter('[%(asctime)s] - %(filename)s[line:%(lineno)d] - fuc:%(funcName)s- %(levelname)s: %(message)s')
13     def __console(self, level, message):
14         # 创建一个FileHandler,用于写到本地
15         fh = logging.FileHandler(self.logname, 'a')  # 追加模式
16         fh.setLevel(logging.DEBUG)
17         fh.setFormatter(self.formatter)
18         self.logger.addHandler(fh)
19 
20         # 创建一个StreamHandler,用于输出到控制台
21         ch = logging.StreamHandler()
22         ch.setLevel(logging.DEBUG)
23         ch.setFormatter(self.formatter)
24         self.logger.addHandler(ch)
25 
26         if level == 'info':
27             self.logger.info(message)
28         elif level == 'debug':
29             self.logger.debug(message)
30         elif level == 'warning':
31             self.logger.warning(message)
32         elif level == 'error':
33             self.logger.error(message)
34         # 这两行代码是为了避免日志输出重复问题
35         self.logger.removeHandler(ch)
36         self.logger.removeHandler(fh)
37         # 关闭打开的文件
38         fh.close()
39 
40     def debug(self, message):
41         self.__console('debug', message)
42 
43     def info(self, message):
44         self.__console('info', message)
45 
46     def warning(self, message):
47         self.__console('warning', message)
48 
49     def error(self, message):
50         self.__console('error', message)
51 
52 if __name__ == "__main__":
53    log = Log()
54    log.info("---测试开始----")
55    log.info("输入密码")
56    log.warning("----测试结束----")

二、log保存本地

1.logger模块的封装在9.2章节,我的用例参考目录如下

2.先设置保存log到本地的文件路径地址,如:log_path = "D:\\test\\newp\\report"

三、用例代码

以下是简单的一个百度的搜索案例仅供参考

 1 # coding:utf-8
 2 
 3 import unittest,time
 4 
 5 from common.logger import Log
 6 
 7 from selenium import webdriver
 8 
 9 log = Log()
10 
11 class Test(unittest.TestCase):
12 
13     def setUp(self):
14 
15         self.driver = webdriver.Firefox()
16 
17         self.driver.get("https://www.baidu.com")
18 
19         self.driver.implicitly_wait(30)
20 
21     def test_01(self):
22 
23         log.info("-------测试用例开始---------")
24 
25         self.driver.find_element_by_id("kw").send_keys("yoyo")
26 
27         log.info("输入内容:yoyo")
28 
29         self.driver.find_element_by_id("su").click()
30 
31         log.info("点击按钮:id = su")
32 
33         time.sleep(2)
34 
35         t = self.driver.title
36 
37         log.info(u"获取title内容:%s"%t)
38 
39         self.assertIn(u"百度搜索",t)
40 
41     def tearDown(self):
42 
43         self.driver.quit()
44 
45         log.info("-------测试用例结束----------")
46 
47 if __name__ == "__main__":
48 
49     unittest.main()

四、运行结果:

1.执行run_all脚本(3.9章节)

2.打开存放日志文件的目录,找到log文件

3.打开报告,看到的效果如下

猜你喜欢

转载自www.cnblogs.com/jason89/p/9028936.html
今日推荐