• python中logging结合pytest打印日志


    目的:使用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文件内容如下:

      到这里就完成了日志信息的输出了、散会 ~

  • 相关阅读:
    PHP配置文件处理类
    PHP中实现图片上传的类库
    在PHP中实现StringBuilder类
    微软官方及第三方SDK http://msdn.microsoft.com/zhcn/jj923044
    在PHP中模拟asp的response类
    Atitit.并发测试解决方案(2) 获取随机数据库记录 随机抽取数据 随机排序 原理and实现
    atitit. access token是什么??微信平台公众号开发access_token and Web session保持状态机制
    atitit.二进制数据无损转字符串网络传输
    atitit.重装系统需要备份的资料总结 o84..
    atitit.web ui 结构建模工具总结
  • 原文地址:https://www.cnblogs.com/yanghr/p/14676175.html
Copyright © 2020-2023  润新知