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顯得有些麻煩,采用這種方式更為簡便一些。

關於日志和緩存封裝的章節就介紹到這里。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM