selenium-日志文件的使用(十二)
2024-10-14 00:09:34
概述
在自动化测试中,如果测试失败需要对错误的错误的代码或者测试case进行分析,进行分析时最好的方法是在项目中添加日志文件,通过日志文件的分析定位出现错误的原因。
这样可以保持自动化测试用例的健壮性,异常的捕获及处理
思路
将生成日志文件封装,然后在执行用例时调用
生成的结果日志文件进行统一管理
生成日志文件
# coding=utf-8 import logging
import datetime
import os class AutoTestLog:
def __init__(self):
self.logger = logging.getLogger() # 创建一个logger
self.logger.setLevel(logging.DEBUG) #指定日志级别 # 以时间命名log文件名
base_path = os.path.dirname(os.path.abspath(__file__)) # 当前文件路径
log_path = base_path + '/../logs/' # log文件路径
file_name = datetime.datetime.now().strftime("%y-%m-%d %H:%M") + '.log' #以时间命名文件名
log_name = log_path + file_name # log文件名 # 将日志写入磁盘
self.file_handle = logging.FileHandler(log_name,'a',encoding='utf-8')
self.file_handle.setLevel(logging.DEBUG)
"""
设置日志格式
%(asctime)s 日志事件发生的时间
%(filename)s pathname的文件名部分,包含文件后缀
%(funcName)s 调用日志记录函数的函数名
%(levelname)s 该日志记录的文字形式的日志级别('DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL')
%(message)s 日志记录的文本内容
"""
file_formatter = logging.Formatter('%(asctime)s - %(filename)s - %(funcName)s - %(levelname)s - %(message)s')
self.file_handle.setFormatter(file_formatter)
# 给logger添加handler
self.logger.addHandler(self.file_handle) def get_log(self):
return self.logger # 关闭handle
def close_handle(self):
self.logger.removeHandler(self.file_handle)
self.file_handle.close()
进行简单的封装
对于封装的可以进行简单的验证
在执行时添加打印message即可,如下
if __name__ == '__main__':
AutoTest = AutoTestLog()
log = AutoTest.get_log()
log.debug('test')
AutoTest.close_handle()
将封装的日志文件进行使用
将上面封装的函数导入case文件,然后将生成的日志文件单独存放,进行统一管理
以百度首页跳转链接case为例
from auto_learning.log.AutoTestLog import AutoTestLog
import unittest
from selenium import webdriver
import time class TestCase(unittest.TestCase):
@classmethod
def setUpClass(cls):
cls.log = AutoTestLog()
cls.logger = cls.log.get_log() @classmethod
def tearDownClass(cls):
cls.log.close_handle() def setUp(self):
self.logger.info("--start test --")
base_url = 'https://www.baidu.com'
self.driver = webdriver.Chrome()
self.driver.implicitly_wait(10)
self.driver.get(base_url) def tearDown(self):
self.driver.close()
self.driver.quit()
self.logger.info("--test end--") def test_baidu_news(self):
u"""百度新闻"""
driver = self.driver
driver.find_element_by_link_text('新闻').click()
time.sleep(1)
self.assertIn(driver.title, u'百度新闻——全球最大的中文新闻平台') def test_baidu_hao123(self):
u"""hao123"""
driver = self.driver
driver.find_element_by_link_text('hao123').click()
time.sleep(1)
self.assertEqual(driver.title, u'hao123_上网从这里开始') def test_baidu_tieba(self):
u"""百度贴吧"""
driver = self.driver
driver.find_element_by_link_text('贴吧').click()
time.sleep(1)
# 错误的断言
self.assertTrue(driver.find_element_by_link_text('全吧搜索+1')) if __name__ == '__main__':
unittest.main()
运行后生成的log文件
原文发布在 软件羊皮卷 微信公众号中,欢迎大家关注
最新文章
- 30分钟学会反向Ajax
- jquery插件之拖拽
- E2 2014.5.8 更新日志
- python获取文件时间
- HDU Destroy Transportation system(有上下界的可行流)
- 新版本ubuntu13.10软件安装
- Oracle start with.connect by prior子句实现递归查询
- mysql数据库操作语句大全
- JavaScript权威指南学习笔记5
- log4j.properties配置说明
- jquery实时获取时间
- Arduino IDE for ESP8266 项目(3)创建AP+STA
- 机器学习 - 开发环境安装pycharm + pyspark + spark集成篇
- 灯光探测器LightProbe[Unity]
- python3中的mysql数据库操作
- JVM内存模型以及垃圾回收
- SQL Server 查询分析器键盘快捷方式
- 线程池(Linux实现)
- Android开发之自己定义TabHost文字及背景(源码分享)
- go——切片