zoukankan      html  css  js  c++  java
  • pytest+yaml+allure接口自动化测试框架02.封装日志与缓存

    前言

    本章节介绍以下封装日志和缓存类。

    在测试执行的过程中我们需要日志去输出关键信息,并能进行实时的查看。可以理解为我们需要监听我们的脚本在做什么,以及做到那一步。

    缓存其实就是一个变量池,把我们不需要存储的一些临时信息存储起来,比如临时的变量,传递的参数等临时信息。

    注意:鄙人用的编辑器是VScode。测试有问题,可以先换成和我一样试试。

    封装日志

    打开utils/logger.py文件,这个utils的意思是一个工具包的意思。在这个里面我们主要存放可以独立运行的工具模块。比如日志文件就是一个可以独立运行的。打开之后我们输入以下的内容:

    # -*- coding: utf-8 -*-
    __author__ = 'wxhou'
    __email__ = '1084502012@qq.com'
    """
    日志类
    """
    import os
    import logging
    from logging.handlers import RotatingFileHandler
    
    
    def init_logger():
        """初始化日志"""
        basedir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
        debug_file = os.path.join(basedir, 'logs', 'server.log')
    
        logger_formatter = logging.Formatter(
            '%(levelname)s %(asctime)s [%(filename)s:%(lineno)s] %(thread)d %(message)s')
    
        # debug
        logger_debug = logging.getLogger('apitest')
        handler_debug = RotatingFileHandler(debug_file,
                                            encoding='utf-8',
                                            maxBytes=20 * 1024 * 1024,
                                            backupCount=10)
        handler_debug.setFormatter(logger_formatter)
        logger_debug.setLevel(logging.DEBUG)
        logger_debug.addHandler(handler_debug)
        return logger_debug
    
    
    logger = init_logger()
    
    if __name__ == '__main__':
        logger.debug("debug")
        logger.info("info")
        logger.warning('warning')
        logger.error("error")
        logger.critical('critical')
    

    下面一些日志输入示例。我们来执行一下。

    image-20210924220036286

    可以看到成功的在日志文件中写入了新的信息。

    缓存

    是的你没看错,我给它起的名字就叫缓存,其实内部组成本质就是一个python字典。而不是你想的redis这种。

    打开common/cache.py文件,我们输入以下内容。

    # -*- coding: utf-8 -*-
    __author__ = 'wxhou'
    __email__ = '1084502012@qq.com'
    """
    缓存类
    """
    from collections import UserDict
    
    
    class CachePool(UserDict):
        """全局变量池"""
    
        def get(self, key, default=None):
            return self.data.get(key, default)
    
        def set(self, key, value = None):
            self.data.setdefault(key, value)
    
        def has(self, key):
            return key in self.data
    
        def __len__(self):
            return len(self.data)
    
        def __bool__(self):
            return bool(self.data)
    
    
    cache = CachePool()
    
    if __name__ == '__main__':
        cache.set('name', 'wxhou')
        print(len(cache))
        print(cache.get('name'))
    

    我们执行测试一下:

    image-20210924221323950

    可以看到没有问题。通过这个字典我们把一些临时的信息放在这个里面,因为只是示例项目,用redis显得有些麻烦,采用这种方式更为简便一些。

    关于日志和缓存封装的章节就介绍到这里。

    随风挥手 ——土木狗的IT生涯 群: 299524235
  • 相关阅读:
    二分数组的一些搜索方法
    获取图像lbp特征
    字符串的模糊搜索
    Python numpy读取图片方法
    红方人员实战手册转载
    libuv的交叉编译
    Gogs的交叉编译与配置
    配置PHP8与Nginx并启动nextcloud
    hi3798mv100SDK上DropBear的交叉编译
    Nginx的交叉编译
  • 原文地址:https://www.cnblogs.com/wxhou/p/InterfaceYamlFramework02.html
Copyright © 2011-2022 走看看