前言
本章节介绍以下封装日志和缓存类。
在测试执行的过程中我们需要日志去输出关键信息,并能进行实时的查看。可以理解为我们需要监听我们的脚本在做什么,以及做到那一步。
缓存其实就是一个变量池,把我们不需要存储的一些临时信息存储起来,比如临时的变量,传递的参数等临时信息。
注意:鄙人用的编辑器是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')
下面一些日志输入示例。我们来执行一下。
可以看到成功的在日志文件中写入了新的信息。
缓存
是的你没看错,我给它起的名字就叫缓存
,其实内部组成本质就是一个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'))
我们执行测试一下:
可以看到没有问题。通过这个字典
我们把一些临时的信息放在这个里面,因为只是示例项目,用redis显得有些麻烦,采用这种方式更为简便一些。
关于日志和缓存封装的章节就介绍到这里。