pytest-allure-日志模块级别控制

一、测试报告和测试日志

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

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

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

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

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

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

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

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

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

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

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

logging.basicConfig(leval=logging.级别)

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

datefmt日期格式

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

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

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

# 日志文件输出
import logging
# *******************************
# pytest日志输出试验,不同级别的日志如何控制输出
# *******************************
# 进行log级别的设置
# logging.basicConfig(level=logging.error)
logging.basicConfig(level=logging.INFO,
        format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
        datefmt='[%Y-%m_%d %H:%M:%S]',
        filename='./my.log1',
        filemode='a')
logging.critical('logging critical message')
logging.error('logging error message')
logging.warning('logging warning message')
logging.info('logging info message')
logging.debug('logging debug message')

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

getlogger是来获取main函数(__name__)

初始化logger对象

初始化控制台对象

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

输出日志信息在控制台

# 日志控制台输出
import logging
# 初始化Logger对象
logger = logging.getLogger(__name__)
logger.setLevel(level = logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
#初始化控制台对象
console = logging.StreamHandler()
console.setFormatter(formatter)
#把控制台对象添加到日志Handler中
logger.addHandler(console)
#输出日志信息在控制台
logger.info("Start print log")
logger.debug("Do something")
logger.warning("Something maybe fail.")
logger.info("Finish")

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

初始化日志对象

初始化日志文件对象

初始化控制台对象

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

公共日志模块设置脚本

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

#**********************************
#公共日志模块设置
#**********************************
import logging
#初始化日志对象
logger = logging.getLogger('commlog')
logger.setLevel(level=logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')

#初始化日志文件对象
handler = logging.FileHandler('log1.txt')
handler.setLevel(logging.INFO)
handler.setFormatter(formatter)

#初始化控制台对象
console = logging.StreamHandler()
console.setLevel(logging.DEBUG)
console.setFormatter(formatter)

#添加日志文件和控制台对象
logger.addHandler(handler)
logger.addHandler(console)

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

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

# 引用公共日志模块的脚本
from test_log import comm_log
import logging

module_logger = logging.getLogger('commlog.sub')
module_logger.info('this is another module using logging')
module_logger.warning('另一个模块打印的警告')

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

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

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

第一块是loogers的初始化对象

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

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

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

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

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

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

log.conf文件

###############################################
[loggers]
keys=root
[logger_root]
level=DEBUG
handlers=hand01
###############################################
[handlers]
keys=hand01
[handler_hand01]
class=StreamHandler
level=DEBUG
formatter=form01
args=(sys.stderr,)
###############################################
[formatters]
keys=form01,form02
[formatter_form01]
format=%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s
datefmt=%a, %d %b %Y %H:%M:%S
[formatter_form02]
format=%(name)-12s: %(levelname)-8s %(message)s
datefmt=%a, %d %b %Y %H:%M:%S

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

# 引用公共配置文件log.conf
# 控制台输出
import logging
import logging.config

logging.config.fileConfig("log.conf")
logger = logging.getLogger("root")
logger.debug('This is debug message')
logger.info('This is info message')
logger.warning('This is warning message')

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

conf配置文件2

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

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

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

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

要引用的文件名要一致

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

logger.conf

[loggers]
keys=root,main

[handlers]
keys=consoleHandler,fileHandler

[formatters]
keys=fmt

[logger_root]
level=DEBUG
handlers=consoleHandler

[logger_main]
level=DEBUG
qualname=main
handlers=fileHandler

[handler_consoleHandler]
class=StreamHandler
level=DEBUG
formatter=fmt
args=(sys.stdout,)

[handler_fileHandler]
class=logging.handlers.RotatingFileHandler
level=DEBUG
formatter=fmt
args=('test.log','a',20000,5,)

[formatter_fmt]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s

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

# 引用公共配置文件log.conf
# 控制台输出又日志文件输出

import logging
import logging.config

logging.config.fileConfig('logger.conf')
root_logger = logging.getLogger('root')
root_logger.debug('test root logger...')

logger = logging.getLogger('main')
logger.info('test main logger')
logger.info('test another')

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值