• allure-日志模块级别控制


    一、测试报告和测试日志

    测试日志:测试过程内部执行情况、错误异常信息

    测试报告:测试内容、测试步骤、测试结果

    测试报告是给用户还有管理者查看的,确认我们最终的测试结果

    日志主要是用来测试脚本的和测试框架的调试,或者出现错误的时候,来进行定位

    日志分内嵌日志和公共日志

    二、测试日志是必须的嘛?可以用打印语句代替日志吗

    如果测试执行的内容不是特别多,也就一两个,脚本里面的逻辑也不不是很复杂,那是可以用print语句代替日志的。一个测试框架对应一个项目的所有文件,如果测试脚本非常多,测试脚本之间的关联关系也是非常的多,如果写一推的查询语句打印语句是非常麻烦的

    三、日志信息级别设置-输出到日志文件

    输出日志一般选择日志文件这种方式来做

    日志级别默认显示warning这个级别,以及这个级别以上的,ERROR和ctitical都在这个级别以上,所以这三条都会打印

    如何显示指定的日志级别显示?

    logging.basicConfig(leval=logging.级别)

    format格式:时间、文件名、代码的第几行、级别的名称、级别方法后面所写的信息

    datefmt日期格式

    filename:日志文件放在什么地方以及叫什么名字

    filemode='a':表示追加写入

    这里是提供了5个级别的方法

    1. # 日志文件输出
    2. import logging
    3. # *******************************
    4. # pytest日志输出试验,不同级别的日志如何控制输出
    5. # *******************************
    6. # 进行log级别的设置
    7. # logging.basicConfig(level=logging.error)
    8. logging.basicConfig(level=logging.INFO,
    9. format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
    10. datefmt='[%Y-%m_%d %H:%M:%S]',
    11. filename='./my.log1',
    12. filemode='a')
    13. logging.critical('logging critical message')
    14. logging.error('logging error message')
    15. logging.warning('logging warning message')
    16. logging.info('logging info message')
    17. logging.debug('logging debug message')

    四、控制台输出(分开来,免得相互有太多的影响)

    getlogger是来获取main函数(__name__)

    初始化logger对象

    初始化控制台对象

    把控制台对象添加到日志handler中

    输出日志信息在控制台

    1. # 日志控制台输出
    2. import logging
    3. # 初始化Logger对象
    4. logger = logging.getLogger(__name__)
    5. logger.setLevel(level = logging.DEBUG)
    6. formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    7. #初始化控制台对象
    8. console = logging.StreamHandler()
    9. console.setFormatter(formatter)
    10. #把控制台对象添加到日志Handler中
    11. logger.addHandler(console)
    12. #输出日志信息在控制台
    13. logger.info("Start print log")
    14. logger.debug("Do something")
    15. logger.warning("Something maybe fail.")
    16. logger.info("Finish")

    五、公共日志模块设置(日志的初始化,默认的)

    初始化日志对象

    初始化日志文件对象

    初始化控制台对象

    添加日志文件和控制台对象

    公共日志模块设置脚本

    有一个commlog这样的名字,就认为它是一个公共日志模块的名称,这个名称可以自己随便改,设置好之后,在其他脚本里面引用就非常简单了

    1. #**********************************
    2. #公共日志模块设置
    3. #**********************************
    4. import logging
    5. #初始化日志对象
    6. logger = logging.getLogger('commlog')
    7. logger.setLevel(level=logging.DEBUG)
    8. formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    9. #初始化日志文件对象
    10. handler = logging.FileHandler('log1.txt')
    11. handler.setLevel(logging.INFO)
    12. handler.setFormatter(formatter)
    13. #初始化控制台对象
    14. console = logging.StreamHandler()
    15. console.setLevel(logging.DEBUG)
    16. console.setFormatter(formatter)
    17. #添加日志文件和控制台对象
    18. logger.addHandler(handler)
    19. logger.addHandler(console)

    引用公共日志模块的和脚本

    当前脚本,把这个com_log引进来,getlogger后面的引入公共配置文件后一定要加.sub

    1. # 引用公共日志模块的脚本
    2. from test_log import comm_log
    3. import logging
    4. module_logger = logging.getLogger('commlog.sub')
    5. module_logger.info('this is another module using logging')
    6. module_logger.warning('另一个模块打印的警告')

    六、引用公共配置文件,控制台输出

    还有一种方法日志公共配置conf文件设置。日志这块也提供了一个配置文件,只不过后缀变成了.conf,只要把格式搞清楚,这个是最基础的公共配置文件,够我们日常使用了

    ,以后无非就是修改一些级别,增加一些handle的输出,增加一些格式选项,整个写的方式就是按照这样的模板来做

    第一块是loogers的初始化对象

    里面handles是指要不要输出到控制台,后面是控制台的内容

    想在控制台输出就是要有handles对象

    handles的类型是,class=streamhandler,上下的leval不一样有什么问题吗?

    args是指我要启用这个控制台,把参数传给命令行,通过常量进行传递,常量的名字是不能随便改的

    接下来输出的格式是什么,对formatters做了一个设置

    formatters下面可以定义多种格式,对应不同的级别可以使用不同的格式

    log.conf文件

    1. ###############################################
    2. [loggers]
    3. keys=root
    4. [logger_root]
    5. level=DEBUG
    6. handlers=hand01
    7. ###############################################
    8. [handlers]
    9. keys=hand01
    10. [handler_hand01]
    11. class=StreamHandler
    12. level=DEBUG
    13. formatter=form01
    14. args=(sys.stderr,)
    15. ###############################################
    16. [formatters]
    17. keys=form01,form02
    18. [formatter_form01]
    19. format=%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s
    20. datefmt=%a, %d %b %Y %H:%M:%S
    21. [formatter_form02]
    22. format=%(name)-12s: %(levelname)-8s %(message)s
    23. datefmt=%a, %d %b %Y %H:%M:%S

    要引用公共公共配置文件的脚本

    1. # 引用公共配置文件log.conf
    2. # 控制台输出
    3. import logging
    4. import logging.config
    5. logging.config.fileConfig("log.conf")
    6. logger = logging.getLogger("root")
    7. logger.debug('This is debug message')
    8. logger.info('This is info message')
    9. logger.warning('This is warning message')

    七、通过公共配置文件,实现控制台输出和日志文件输出

    conf配置文件2

    定义类两个关键字可以用root进行初始化,也可以用main进行初始化。输出的对象有两个,一个是文件,一个是控制台

    学习的重点不是语法背下来多少,很多东西靠记忆力是记不住的,反复应用,多用几次就记住了

    现在学的都是零散的基础试验

    我们要理解它的原理和他对应的一个关系,有一些关键字的引用

    要引用的文件名要一致

    初始化logger的对象,要看conf的关键字叫什么名字,再引用一样的名字就好

    logger.conf

    1. [loggers]
    2. keys=root,main
    3. [handlers]
    4. keys=consoleHandler,fileHandler
    5. [formatters]
    6. keys=fmt
    7. [logger_root]
    8. level=DEBUG
    9. handlers=consoleHandler
    10. [logger_main]
    11. level=DEBUG
    12. qualname=main
    13. handlers=fileHandler
    14. [handler_consoleHandler]
    15. class=StreamHandler
    16. level=DEBUG
    17. formatter=fmt
    18. args=(sys.stdout,)
    19. [handler_fileHandler]
    20. class=logging.handlers.RotatingFileHandler
    21. level=DEBUG
    22. formatter=fmt
    23. args=('test.log','a',20000,5,)
    24. [formatter_fmt]
    25. format=%(asctime)s - %(name)s - %(levelname)s - %(message)s

    要引用公共配置文件的脚本,输出控制台日志和脚本日志

    1. # 引用公共配置文件log.conf
    2. # 控制台输出又日志文件输出
    3. import logging
    4. import logging.config
    5. logging.config.fileConfig('logger.conf')
    6. root_logger = logging.getLogger('root')
    7. root_logger.debug('test root logger...')
    8. logger = logging.getLogger('main')
    9. logger.info('test main logger')
    10. logger.info('test another')

    八、一般来说,日志输出都是以文件的形式

  • 相关阅读:
    LM小型可编程控制器软件(基于CoDeSys)笔记十七:pto脉冲功能块
    洛谷 P1948 / loj 10074 / 一本通 1496【分层图】
    Live800:在线客服系统如何帮助企业创造持续的服务价值?
    《算法导论》15章-动态规划 15.1 钢条切割(含有C++代码)
    FPGA_IIC代码-正点原子 野火 小梅哥 特权同学对比写法(3)
    代码随想录|二维数组的01背包问题,优化-一维数组的01背包问题
    【无标题】
    【应用】Docker Swarm
    protobuf用cmake生成vs2010项目文件
    电源小白入门学习10——浪涌、防浪涌器件、浪涌保护芯片
  • 原文地址:https://blog.csdn.net/weixin_47547541/article/details/126797375