首页 > 开发 > Python > 正文

python自动化测试之异常及日志操作实例分析

2020-07-28 14:10:36
字体:
来源:转载
供稿:网友

本文实例讲述了python自动化测试之异常及日志操作。分享给大家供大家参考,具体如下:

  为了保持自动化测试用例的健壮性,异常的捕获及处理,日志的记录对掌握自动化测试执行情况尤为重要,这里便详细的介绍下在自动化测试中使用到的异常及日志,并介绍其详细的用法。

  一、日志

    打印日志是很多程序的重要需求,良好的日志输出可以帮我们更方便的检测程序运行状态。Python标准库提供了logging模块,切记Logger从来不直接实例化,其好处不言而喻,接下来慢慢讲解Logging模块提供了两种记录日志的方式。

logging之模块级别的函数方式记录日志
import logging#设置日志,包括filename、level、format、filemode、stream,其中format属性极其丰富,详情可查看API文档,这里只做简要介绍logging.basicConfig(level = logging.INFO,  format = '%(asctime)s - %(name)s - %(levelname)s - %(message)s',  datefmt = "%Y/%m%d %H%M%S",  filename = "log.txt")#消息级别,五级logging.debug("芹泽多摩雄") logging.info("真")logging.warning("男")logging.error("人")logging.critical("!")
  logging之日志系统的四大组件(日志器、处理器、过滤器、格式器)方式记录日志
import logging# 生成日志实例,日志器logger = logging.getLogger(__name__)#基本单元的配置(LEVER)logger.setLevel(level = logging.INFO)formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')#生成管道分支,处理器handler_1 = logging.FileHandler("log.txt")handler_2 = logging.StreamHandler()#自定义格式,格式器handler_1.setFormater(formatter, “%Y-%m-%d %H:%M:%S”)handler_2.setFormater(formatter, “%Y-%m-%d %H:%M:%S”)#对接分支管道与源头,处理器logger.addHandler(handler_1)logger.addHandler(handler_2)#层级结构,logger的名称是一个以'.'分割的层级结构,每个'.'后面的logger都是'.'前面的logger的children,通常配合过滤器一起使用#过滤器#。。。。保留#开始记录logger.debug("芹泽多摩雄") logger.info("真")logger.warning("男")logger.error("人")logger.critical("!")
细心的盆友又可以发现,可以发现,logging有一个日志处理的主对象,其他处理方式都是通过addHandler添加进去,这里采用logging.StreamHandler实现日志输出到流(控制台),也可以用FileHandler实现日志输出到文件 日志回滚
import loggingfrom logging.handlers import RotatingFileHandlerlogger = logging.getLogger(__name__)logger.setLevel(level = logging.INFO)#定义一个RotatingFileHandler,最多备份3个日志文件,每个日志文件最大1KrHandler = RotatingFileHandler("log.txt",maxBytes = 1*1024,backupCount = 3)rHandler.setLevel(logging.INFO)formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')rHandler.setFormatter(formatter)console = logging.StreamHandler()console.setLevel(logging.INFO)console.setFormatter(formatter)logger.addHandler(rHandler)logger.addHandler(console)logger.debug("芹泽多摩雄") logger.info("真")logger.warning("男")logger.error("人")logger.critical("!")
多模块使用
#主模块import loggingimport subModulelogger = logging.getLogger("mainModule")logger.setLevel(level = logging.INFO)handler = logging.FileHandler("log.txt")handler.setLevel(logging.INFO)formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')handler.setFormatter(formatter)console = logging.StreamHandler()console.setLevel(logging.INFO)console.setFormatter(formatter)logger.addHandler(handler)logger.addHandler(console)#子模块import loggingmodule_logger = logging.getLogger("mainModule.sub")class SubModuleClass(object):  def __init__(self):    self.logger = logging.getLogger("mainModule.sub.module")
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表