• logging模块和自动化及日志类的封装


    1.自动化

    自动化三种:数据驱动,代码驱动,关键字驱动

    框架其实就是工具的集合

            数据驱动 :根据数据来去测试的。比如case是存在excel中的数据

            代码驱动: 测试用例都是写代码来测试的。业务case是代码实现

            关键字驱动   主要用于ui自动化  有集成包比如

                    点击  -->  .click()

                    下一步

                    提交  --> .submit()

    根据字典中存放的对应的方法,直接只需了解关键字就可以(适合对对吗不了解)

                    {

                       '点击':click()

                       '提交':submit()

                    }

    2.日志模块logging

    import logging    #日志模块导入

    # logging
    # logging.basicConfig(level=logging.DEBUG,#控制台打印的日志级别
    # filename='hahah.log', #指定log存放的文件
    # filemode='a', #指定写入的模式为追加模式
    # format=
    # '%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s'
    # #日志格式
    # ) #这种写法对于中文会乱码并且控制台不再打印日志
    日志的四种级别
    # logging.debug('debug级别,最低级别,一般开发人员用来打印一些调试信息')
    # logging.info('info级别,正常输出信息,一般用来打印一些正常的操作')
    # logging.warning('waring级别,一般用来打印警信息')
    # logging.error('error级别,一般用来打印一些错误信息')

     综上情况  从新设计:

    # 1、办公室

    # 2、负责往控制台里面输出日志信息的

    # 3、往日志文件里面写日志的,按天生成日志,清理日志

    import logging    #日志模块导入

    from logging import handlers     #导入相应

    logger = logging.getLogger()  #先实例化一个logger对象,先创建一个办公室

    logger.setLevel(logging.DEBUG) #设置日志的级别的人   

    # fl = logging.FileHandler(filename='a.log',mode='a',encoding='utf-8')该功能也能写bl功能更强大。

    cl = logging.StreamHandler() #负责往控制台输出的人

    bl = handlers.TimedRotatingFileHandler(filename='a.log',when='S',interval=1,backupCount=3,encoding='utf-8')   #负责往日志文件出入interval=间隔多长时间生成,backupCount保留几个

    #  when,按什么单位,生成日志。

                #S 秒

                # M 分

                # H 小时、

                # D 天、

                # W 每星期(interval==0时代表星期一)

    fmt = logging.Formatter('%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s')   #日志格式 一般固定写法

    cl.setFormatter(fmt) #设置控制台输出的日志格式

    bl.setFormatter(fmt) #设置文件里面写入的日志格式

    logger.addHandler(cl) #把已经调教好的人放到办公室里

    logger.addHandler(bl) ##把已经调教好的人放到办公室里

    #指定日志的格式

    logger.debug('我是debug。。。')

    logger.warning('我是waring。。。')

    思考并查看:

    #1、先看看,是不是控制台也有了,文件里面也有了,中文也不是乱码了

    #2、每秒运行一次,看看是不是每秒都会产生一个文件

    #3、再看看是不是帮你备份3个

    3.封装写日志的类

    import logging

    from logging import handlers

    class MyLogger():

             def __init__(self,file_name,level='info',backCount=5,when='D'):

                       logger = logging.getLogger()  # 先实例化一个logger对象,先创建一个办公室

                       logger.setLevel(self.get_level(level))  # 设置日志的级别的人,根据函数传入

                       cl = logging.StreamHandler()  # 负责往控制台输出的人

                       bl = handlers.TimedRotatingFileHandler(filename=file_name, when=when, interval=1, backupCount=backCount, encoding='utf-8')

                       fmt = logging.Formatter('%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s')

                       cl.setFormatter(fmt)  # 设置控制台输出的日志格式

                       bl.setFormatter(fmt)  # 设置文件里面写入的日志格式

                       logger.addHandler(cl)

                       logger.addHandler(bl)

                       self.logger = logger

             def get_level(self,str):  #方便写日志级别

                       level = {

                                'debug':logging.DEBUG,

                                'info':logging.INFO,

                                'warn':logging.WARNING,

                                'error':logging.ERROR

                       }

                       str = str.lower()       #这样就会不区分输入的大小写

                       return level.get(str)    #取日志字典中的级别

    lw_log = MyLogger('lw.log','debug')

    lw_log.logger.warning('哈哈哈')

  • 相关阅读:
    kafka副本
    kafka消息丢失
    kafka消费者
    RN8302b调试笔记
    MDK #pragma anon_unions
    [Python笔记]Strip
    [Python笔记]AnyAll
    [Python笔记]元组
    [Python笔记]列表
    嵌入式平台移植Python
  • 原文地址:https://www.cnblogs.com/cslw5566/p/9108550.html
Copyright © 2020-2023  润新知