selenium-日志文件的使用(十二)
概述
在自动化测试中,如果测试失败需要对错误的错误的代码或者测试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文件

原文发布在 软件羊皮卷 微信公众号中,欢迎大家关注

selenium-日志文件的使用(十二)的更多相关文章
- Spark RDD/Core 编程 API入门系列之动手实战和调试Spark文件操作、动手实战操作搜狗日志文件、搜狗日志文件深入实战(二)
1.动手实战和调试Spark文件操作 这里,我以指定executor-memory参数的方式,启动spark-shell. 启动hadoop集群 spark@SparkSingleNode:/usr/ ...
- 文件操作(十二)——open,read,close,write,seek,truncate
open函数 #!/usr/bin/env python #-*- coding:utf8 -*- f = open('xxx','r',encoding='utf-8') data = f.read ...
- Unity3D研究院之IOS&Android收集Log文件(六十二)
开发项目的时候尤其在处理与服务器交互这块,如果服务端程序看不到客户端请求的Log信息,那么无法修改BUG.在Windows上Unity会自动讲Log文件写入本地,但是在IOS和Android上确没有这 ...
- log4j每天,每小时产生一日志文件
log4j每天,每小时产生一日志文件 2016年08月05日 14:14:33 阅读数:6254 一.之前的文章中有log4j的相关配置以及属性的介绍,下面我们先把配置列出来: log4j.roo ...
- 日志文件迁移至OSS
一台服务器在用阿里云ECS,因为穷,磁盘空间有限,服务器日志文件每天都在增长,需要定期清理释放磁盘空间,想到几种解决方案: 写任务定时备份到本地服务器 直接下载到本地用移动硬盘备份 备份到阿里云OSS ...
- 使用logstash的input file filter收集日志文件
使用logstash的input file filter收集日志文件 一.需求 二.实现步骤 1.前置知识 2.编写pipeline文件 3.Input 中 file 插件的部分参数解释: 4.启动l ...
- ASP.NET Core 2.1 : 十二.内置日志、使用Nlog将日志输出到文件
应用离不开日志,虽然现在使用VS有强大的调试功能,开发过程中不复杂的情况懒得输出日志了(想起print和echo的有木有),但在一些复杂的过程中以及应用日常运行中的日志还是非常有用. ASP.NET ...
- 第十二篇 Integration Services:高级日志记录
本篇文章是Integration Services系列的第十二篇,详细内容请参考原文. 简介在前一篇文章我们配置了SSIS内置日志记录,演示了简单和高级日志配置,保存并查看日志配置,生成自定义日志消息 ...
- Java进阶(五十二)利用LOG4J生成服务日志
Java进阶(五十二)利用LOG4J生成服务日志 前言 由于论文写作需求,需要进行流程挖掘.前提是需要有真实的事件日志数据.真实的事件日志数据可以用来发现.监控和提升业务流程. 为了获得真实的事件日志 ...
随机推荐
- pytest之收集用例规则与运行指定用例
前言 上篇文章相信大家已经了解了pytest在cmd下结合各种命令行参数如何运行测试用例,并输出我们想要看到的信息.那么今天会讲解一下pytest是如何收集我们写好的用例?我们又有哪些方式来运行单个用 ...
- Linux 开启和关闭 Ping 操作
Linux 默认是开启 ping 操作的,通过以下两种方式可以开启和关闭 ping 操作 . 1.修改内核参数 通过内核参数设置也有两种方式,一种是临时修改,一种是永久修改. 1.1 临时设置 PIN ...
- WebGL绘制有端头的线
关于WebGL绘制线原理不明白的小伙伴,可以看看我之前的文章WebGL绘制有宽度的线.这一篇我们主要来介绍端头的绘制,先看效果图. 端头一般被称为lineCap,主要有以下三种形式: butt最简单等 ...
- nginx在Centos7.5下源码安装和配置
安装nginx 安装nginx依赖包 yum install -y pcre-devel zlib-devel openssl-devel wget gcc tree vim 进入目录/root/se ...
- Pytorch系列教程-使用字符级RNN生成姓名
前言 本系列教程为pytorch官网文档翻译.本文对应官网地址:https://pytorch.org/tutorials/intermediate/char_rnn_generation_tutor ...
- 跟我一起学opencv 第二课之图像的掩膜操作
1.掩膜(mask)概念 用选定的图像,图形或物体,对处理的图像(全部或局部)进行遮挡,来控制图像处理的区域或处理过程.用于覆盖的特定图像或物体称为掩模或模板.光学图像处理中,掩模可以足胶片,滤光片等 ...
- 使用ASP.NET Core开发GraphQL服务器 -- 预备知识(下)
上一篇文章:https://www.cnblogs.com/cgzl/p/9734083.html 处理数据 嵌套字段 看例子: 我想查看viewer下的repositories.注意里面的edges ...
- Python基础(数字,字符串方法)
数字: #二进制转十进制 a=' v=int(a,base=2) print(v) 进制转换 #当前数字的二进制至少有多少位 b=2 v2=b.bit_length() print(v2) 数值二进制 ...
- 配置完IDEA开发lua后用idea竟然打不开lua的文件。
1.文件没关联上 File > setting > File Types 完成后即可打开lua文件
- 基于mapreduce实现图的三角形计数
源代码放在我的github上,想细致了解的可以访问:TriangleCount on github 一.实验要求 1.1 实验背景 图的三角形计数问题是一个基本的图计算问题,是很多复杂 ...