目的:使用pytest框架执行测试用例时、把对应的报错信息添加到log文件中去
前言:日志一共有五个等级、排序为:DEBUG < INFO < WARNING < ERROR < CRITICAL
知识点:日志格式内容设置参考:
参数 作用 %(levelno)s 打印日志级别的数值 %(levelname)s 打印日志级别的名称 %(pathname)s 打印日志当前执行的路径、即sys.argv[0] %(filename)s 打印当前执行程序名 %(funcName)s 打印日志的当前函数 %(lineno)d 打印梯子的当前行号 %(asctime)s 打印日志的时间 %(thread)d 打印线程ID %(threadName)s 打印线程名称 %(message)s 打印报错信息 %(process)d 打印进程ID
步骤一:设置日志的信息格式、如下:
import datetime #python自带的时间模块 import logging #python中自带的日志模块 def myLogger(name=__name__): #1-定义日志的名称 loggerName=datetime.datetime.now().strftime("%Y%m%d %H%M") #以时间为文件名 #2-定义生成日志的存放位置 logDir=f"../log/{loggerName}.log" #3-创建日志对象 logObj=logging.getLogger(name) #缺省值参数 __name__ #4- 定义日志级别 logObj.setLevel(logging.INFO) #这是设置的是INFO,那么其可以记录等级比其高的错误信息、不会记录等级比其低的错误信息(即DEBUG级别的错误) #5- 日志文件的属性 fHandler = logging.FileHandler(logDir,mode="w",encoding="utf-8") #6- 日志内容的格式 (参数内容根据个人需求 参考以上知识点中内容即可) formatter=logging.Formatter("%(asctime)s %(levelname)s %(funcName)s %(filename)s[%(lineno)d]: %(message)s") fHandler.setFormatter(formatter) #7- 把对应的属性添加到日志对象中 logObj.addHandler(fHandler) return logObj
步骤二、具体使用、这里结合trackback模块:
from tools.loginBasic import myLogger import traceback import pytest log=myLogger() #先调用方法、返回日志对象 class Test: def test_demo(self): res={"username":123,"password":"123"} try: assert res["age"] == "测试" #因为res中没有age这个键、所以这语句会报错、except中就可以抓到这个异常了 except Exception as e: log.error(traceback.format_exc()) #这里把错误信息定义为error级别的 raise e #如果使用了allure报告查看结果、那么这里需要我们手动抛出异常给框架、要不报告中看不到错误 if __name__ == ‘__main__‘: pytest.main(["-s",‘test_login.py‘,"-k test_demo"]) #运行查看结果即可
步骤三、生成的log文件内容如下:
到这里就完成了日志信息的输出了、散会 ~
原文:https://www.cnblogs.com/yanghr/p/14676175.html