返回顶部
首页 > 资讯 > 后端开发 > Python >python自动化测试通过日志3分钟定位bug的示例分析
  • 153
分享到

python自动化测试通过日志3分钟定位bug的示例分析

2023-06-25 16:06:27 153人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章主要为大家展示了“python自动化测试通过日志3分钟定位bug的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Python自动化测试通过日志3分钟定位bug的示例分析”这篇文章

这篇文章主要为大家展示了“python自动化测试通过日志3分钟定位bug的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Python自动化测试通过日志3分钟定位bug的示例分析”这篇文章吧。

    一、简单使用

    入门小案例

    import logginglogging.basicConfig(level=logging.DEBUG,  #设置级别,根据等级显示    fORMat='%(asctime)s-[%(filename)s-->line:%(lineno)d]-%(levelname)s:% (message)s')  # 设置输出格式logging.debug('This is a debug log')logging.info('This is a info log')logging.warning('This is a warning log')logging.error('This is a error log')logging.critical('This is a critical log')

    日志级别

    根据不同情况设置了五种日志等级,不同情况输出不同等级的日志。

    python自动化测试通过日志3分钟定位bug的示例分析

    日志器设置的级别会过滤掉低于这个级别的日志

    import logginglogging.basicConfig(level=logging.WARNING,  #设置级别,根据等级显示    format='%(asctime)s-[%(filename)s-->line:%(lineno)d]-%(levelname)s:% (message)s')  # 设置输出格式logging.debug('This is a debug log')logging.info('This is a info log')logging.warning('This is a warning log')logging.error('This is a error log')logging.critical('This is a critical log')

    2020-09-11 17:39:26,667-WARNING-This is a warning log

    2020-09-11 17:39:26,669-ERROR-This is a error log

    2020-09-11 17:39:26,669-CRITICAL-This is a critical log

    配置

    basicConfig 方法支持一下关键字参数进行配置。

    python自动化测试通过日志3分钟定位bug的示例分析

    格式化规则

    日志的输出格式可以通过下面格式自由组合输出

    python自动化测试通过日志3分钟定位bug的示例分析

    常用格式:%(asctime)s-[%(filename)s–>line:%(lineno)d]-%(levelname)s:% (message)s

    import logginglogging.basicConfig(level=logging.DEBUG,  #设置级别,根据等级显示    format='%(asctime)s-[%(filename)s-->line:%(lineno)d]-%(levelname)s:% (message)s')  # 设置输出格式logging.debug('This is a debug log')

    [DEBUG]-2020-09-11 17:36:50,125–4:This is a debug log

    日志写到文件

    只需要配置 filename 参数即可

    import logginglogging.basicConfig(    level=logging.WARNING,  #设置级别,根据等级显示    filename='example.log'    format='%(asctime)s-[%(filename)s-->line:%(lineno)d]-%(levelname)s:% (message)s')  # 设置输出格式logging.debug('This is a debug log')logging.info('This is a info log')logging.warning('This is a warning log')logging.error('This is a error log')logging.critical('This is a critical log')

    注意,配置了 fielname 后,日志将不会输出在控制台。

    二、高级用法

    简单的代码通过 logging 直接使用即可,如果要深入使用需要按照面向对象的方式使用 logging。

    日志组件

    logging 模块包含一下几个组件。

    python自动化测试通过日志3分钟定位bug的示例分析

    步骤

     1创建日志记录器
    import logging#  第一步创建一个logger,用来产生日志logger = logging.getLogger('%s_log' % __name__)logger.setLevel(logging.DEBUG)  # 设置日志等级

    通过 getLogger 这个方法可以创建一个日志记录器,注意要给名字否则返回根日志记录器。

    通过 setLevel 设置日志记录器的等级。

    2创建日志处理器
    # 创建一个文本处理器用来将日志写入到文件file_handler = logging.FileHandler(filename='py34.log',encoding='utf-8')
    file_handler.setLevel('WARNING')  # 设置处理器的日志等级
    # 创建一个控制台处理器用来将日志输出到控制台console_handler = logging.StreamHandler()console_handler.setLevel('INFO')  # 设置控制台处理器的日志等级

    日志处理器就是将日志发送到指定的位置

    FileHandler 将日志发送到文件

    StreaHandler 将它可将日志记录输出发送到数据流例如 sys.stdout, sys.stderr 或任何文件类对象默认sys.stdout 即控制台。

    RotatingFileHandler 支持根据日志文件大小进行轮转

    TimedRotatingFileHandler 支持根据时间进行轮转日志文件

    更多详情见官方文档

    https://docs.python.org/zh-cn/3/library/logging.handlers.html?utm_source=testingpai.com#module-logging.handlers)

     3创建格式化器
    formatter = logging.Formatter(fmt='%(levelname)s %(asctime)s [%(filename)s-->line:%(lineno)d]:%(message)s')

    格式化器需要设置到处理器上

    file_handler.setFormatter(formatter)console_handler.setFormatter(formatter)
    4创建过滤器

    过滤器用来过滤指定日志。具体使用略,一般用不到。

    详情见官方文档

    Https://docs.python.org/zh-cn/3/howto/logging-cookbook.html?utm_source=testingpai.com#filters-contextual )

    5 将处理器添加到记录器上
    logger.addHandler(file_handler)logger.addHandler(console_handler)
    6 记录日志
    logger.info('This is a info')

    2020-09-11 22:22:44,095-[–>line:1]-INFO:This is a info

    logger.warning('This is a warning')

    2020-09-11 22:23:20,337-[–>line:1]-WARNING:This is a warning

    三、日志模块封装

    功能分析

    • 能够自定义日志器名

    • 能够自定义日志文件名和路径

    • 能够自定义日志文件编码方式

    • 能够自定义日志格式

    • 使用时间轮转处理器,并能够配置

    封装成函数

    在 common 目录下创建模块 log_handler.py 在其中创建如下函数。

    import loggingfrom logging.handlers import TimedRotatingFileHandlerdef get_logger(name, filename, encoding='utf-8', fmt=None, when='d', interval=1, backup_count=7, debug=False):    """    :param name: 日志器的名字    :param filename: 日志文件名(包含路径)    :param encoding: 字符编码    :param fmt: 日志格式    :param when: 日志轮转时间单位    :param interval: 间隔    :param backup_count: 日志文件个数    :param debug: 调试模式    :return:    """    logger = logging.getLogger(name)    logger.setLevel(logging.DEBUG)    # 文件处理器的等级一般情况一定比控制台要高    if debug:        file_level = logging.DEBUG        console_level = logging.DEBUG    else:        file_level = logging.WARNING        console_level = logging.INFO    if fmt is None:        fmt = '%(levelname)s %(asctime)s [%(filename)s-->line:%(lineno)d]:%(message)s'    file_handler = TimedRotatingFileHandler(        filename=filename, when=when, interval=interval, backupCount=backup_count, encoding=encoding)    file_handler.setLevel(file_level)    console_handler = logging.StreamHandler()    console_handler.setLevel(console_level)    formatter = logging.Formatter(fmt=fmt)    file_handler.setFormatter(formatter)    console_handler.setFormatter(formatter)    logger.addHandler(file_handler)    logger.addHandler(console_handler)    return loggerif __name__ == '__main__':    log = get_logger(name='py41', filename='py41.log', debug=True, when='s')    log.info('我是普通信息')    import time    time.sleep(3)    log.warning('我是警告信息')

    四、应用到项目

    导入

    日志器生成函数的导入不能像 excel 数据读取函数一样,每个用例模块里都导入一遍。因为它返回一个日志器对象,当多次调用日志器生成函数,且日志器名称相同时,会给同一个日志器添加多个日志处理器,从而出现重复记录日志器的问题。

    为了解决上面的问题,在 common 文件夹下创建一个名为 init.py 的文件,在 common 模块被导入时会自动执行这个文件里的代码,且只会执行一次。

    init.py 文件编写如下代码:

    from .log_handler import get_loggerlogger = get_logger('py41', 'py38.log')

    那么在项目中的其他模块中就可以通过如下代码导入

    from common import logger

    从而可以保证在项目执行过程中,get_logger 方法只会执行一遍。

    记录日志

    日志的作用是记录程序的运行状态和当程序出现问题时能提供定位分析错误的依据。

    什么时候需要记录日志,记录什么日志,根据每个人对程序的理解,以及经验。

    我们的项目中,在用例执行的过程是核心,所以我们的日志也是围绕着用例的执行。

    使用日志记录每个用例的测试数据,和测试结果,代码如下:

    ...@list_data(*cases)    def test_login(self, case):        """        登陆测试        """        logger.info('测试用例【{}】开始测试'.format(case['title']))        # 1. 测试数据        # 传入进来的case参数        logger.info('测试用例【{}】的测试数据是:{}'.format(case['title'], case))        # 2. 测试步骤        res = login_check(case['username'], case['passWord'])        logger.info('测试用例【{}】的测试结果是:{}'.format(case['title'], res))        # 3. 断言        try:            self.assertEqual(res, case['expect'])        except AssertionError as e:            logger.error('测试用例【{}】断言失败'.format(case['title']))            raise e        else:            logger.info('测试用例【{}】断言成功'.format(case['title']))        finally:            logger.info('测试用例【{}】测试结束')

    以上是“python自动化测试通过日志3分钟定位bug的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网Python频道!

    --结束END--

    本文标题: python自动化测试通过日志3分钟定位bug的示例分析

    本文链接: https://lsjlt.com/news/305986.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    猜你喜欢
    • python自动化测试通过日志3分钟定位bug的示例分析
      这篇文章主要为大家展示了“python自动化测试通过日志3分钟定位bug的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“python自动化测试通过日志3分钟定位bug的示例分析”这篇文章...
      99+
      2023-06-25
    • python自动化测试通过日志3分钟定位bug
      目录一、简单使用入门小案例日志级别配置格式化规则日志写到文件二、高级用法日志组件步骤1 创建日志记录器2 创建日志处理器3 创建格式化器4 创建过滤器5 将处理器添加到记录器上6 记...
      99+
      2024-04-02
    • python自动化测试selenium定位frame及iframe的示例分析
      小编给大家分享一下python自动化测试selenium定位frame及iframe的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!frame标签有frameset、frame、iframe三种,frameset和...
      99+
      2023-06-25
    • selenium自动化测试的示例分析
      本篇文章为大家展示了selenium自动化测试的示例分析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。下载驱动器http://chromedriver.storage.googleapis.com/...
      99+
      2023-06-26
    • Puppeteer前端自动化测试的示例分析
      这篇文章主要为大家展示了“Puppeteer前端自动化测试的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Puppeteer前端自动化测试的示例分析”这...
      99+
      2024-04-02
    • Angular.js自动化测试之protractor的示例分析
      小编给大家分享一下Angular.js自动化测试之protractor的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!前...
      99+
      2024-04-02
    • python自动化测试selenium定位frame及iframe示例
      frame标签有frameset、frame、iframe三种,frameset和其它普通标签没有区别,不会影响正常定位,而frame与iframe对selenium定位而言是一样的...
      99+
      2024-04-02
    • Python中Selenium自动化浏览器测试的示例分析
      小编给大家分享一下Python中Selenium自动化浏览器测试的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Python之Selenium(自动化浏览...
      99+
      2023-06-29
    • 移动开发中自动化测试的示例分析
      小编给大家分享一下移动开发中自动化测试的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、自动化测试的概念自动化测试是把以人为驱动的测试行为转化为机器执行...
      99+
      2023-06-04
    • SecureCRT自动记录日志的示例分析
      这期内容当中小编将会给大家带来有关SecureCRT自动记录日志的示例分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。现在管理的数据库数量多,实时性强,经常遇到数据库突发事件,每次做的关键步骤操作我都保...
      99+
      2023-06-06
    • 10分钟玩转Python+Selenium自动化测试,快速入门通道!
      最近浏览了很多同学的简历,大部分都有自动化测试,基本都有selenium。但很少有人真正弄清selenium。一个是selenium的提供了很多组件,让人容易上手,然后很多人就没有然后了。二是selenium的更新伴随着工具的合并,很多人压...
      99+
      2023-06-06
    • Bootstrap中自动定位浮标的示例分析
      这篇文章给大家分享的是有关Bootstrap中自动定位浮标的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Bootstrap是什么Bootstrap是目前最受欢迎的前端框架,它是基于 HTML、CSS、J...
      99+
      2023-06-14
    • Pytest接口自动化测试框架搭建模板的示例分析
      小编给大家分享一下Pytest接口自动化测试框架搭建模板的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!auto_api_test开发环境: Pychar...
      99+
      2023-06-14
    • Python自动化办公脚本的示例分析
      小编给大家分享一下Python自动化办公脚本的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1、自动化阅读网页新闻这个脚本能够实现从网页中抓取文本,然后自...
      99+
      2023-06-29
    • vue-baidu-map进入页面自动定位的示例分析
      这篇文章将为大家详细讲解有关vue-baidu-map进入页面自动定位的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。首先要明确一点(文档原话):由于百度地图 J...
      99+
      2024-04-02
    • idea自带Jacoco/idea自动测试语句覆盖率的示例分析
      这篇文章主要介绍了idea自带Jacoco/idea自动测试语句覆盖率的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、准备工作首先你肯定必须要有测试的项目,这个是...
      99+
      2023-06-14
    • python中自动化运维工具ansible的示例分析
      这篇文章主要介绍python中自动化运维工具ansible的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!ansible 简介ansible 是什么?  ansible是新出现的自动化运维工具,基于Pytho...
      99+
      2023-06-20
    • 使用Gitee自动化部署python脚本的示例分析
      这篇文章将为大家详细讲解有关使用Gitee自动化部署python脚本的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、前期准备1.1 安装环境安装python32、打开命令行安装selenium...
      99+
      2023-06-15
    • layui中自动滚动二级iframe页面到指定位置的示例分析
      小编给大家分享一下layui中自动滚动二级iframe页面到指定位置的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、...
      99+
      2024-04-02
    • CentOS 7.x环境下搭建: Headless chrome + Selenium + ChromeDriver实现自动化测试的示例分析
      这期内容当中小编将会给大家带来有关CentOS 7.x环境下搭建: Headless chrome + Selenium + ChromeDriver实现自动化测试的示例分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大...
      99+
      2023-06-06
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作