yaml配置文件D19
1)yaml配置
2)yaml封装
3)logging封装配合yaml配置文件
附带代码:
import yaml
from yaml import SafeLoader
def read_yaml(file):
with open(file, "r") as f:
config = yaml.load(f, Loader=SafeLoader)
return config
def write_yaml(file, data):
with open(file, "a") as f:
yaml.dump(data, f)
if __name__ == '__main__':
print(read_yaml("config.yaml"))
write_yaml("config.yaml", {"code": "18"} )
import logging
from common.yaml_handler import read_yaml
config = read_yaml("config.yaml")
logger_config = config["logger"]
def get_logger(
name=logger_config["name"],
file=logger_config["file"],
logger_level=logger_config["logger_level"],
stream_level=logger_config["stream_level"],
file_level=logger_config["file_level"],
fmt="%(asctime)s--%(filename)s--lineNO:%(lineno)d--%(levelname)s:%(message)s"
):
logger = logging.getLogger(name)
logger.setLevel(logger_level)
stream_logger = logging.StreamHandler()
stream_logger.setLevel(stream_level)
logger.addHandler(stream_logger)
fmt = logging.Formatter(fmt)
stream_logger.setFormatter(fmt)
if file:
file_logger = logging.FileHandler(file)
file_logger.setLevel(file_level)
logger.addHandler(file_logger)
file_logger.setFormatter(fmt)
return logger
if __name__ == '__main__':
logger = get_logger()
logger.debug("hello,python")
logger.warning("hi,world!")
作业:
自动化测试框架搭建 请根据模块分层思想搭建自动化框架结构 公共的方法目录:common 测试用例类模块目录:testcases 测试数据目录:data 测试报告存放目录:reports 存放一些下载第三方的模块:library 配置文件存放目录:conf 日志文件存放的目录:logs 项目的启动文件:run_test.py 分别测试每个模块是否可以使用。 (有精力的同学可以尝试自己先调通模块之间的调用,不需要提交)
上期答案:
""" logging 模块封装 对 logging 日志处理进行封装。使用 2 种方法: 方法一: 函数封装 def get_logger() 方法二: 类封装 class LoggerHander(logging.Logger) 提示:得到收集器 logger 可以用 super()__init__ 哦! """ # 掌握把日志封装成函数方法即可 import logging def get_logger( name=None, file=None, logger_level="DEBUG", stream_level="DEBUG", file_level="INFO", fmt="%(asctime)s--%(filename)s--lineNO:%(lineno)d--%(levelname)s:%(message)s" ): # 设置日志收集器 logger = logging.getLogger(name) logger.setLevel(logger_level) # 设置日志处理器 流处理器 stream_handler = logging.StreamHandler() stream_handler.setLevel(stream_level) logger.addHandler(stream_handler) fmt = logging.Formatter(fmt) stream_handler.setFormatter(fmt) if file: file_handler = logging.FileHandler(file, encoding="utf-8") file_handler.setLevel(file_level) logger.addHandler(file_handler) file_handler.setFormatter(fmt) return logger # class LoggerHandler: # def __init__( # self, # name=None, # file=None, # logger_level="DEBUG", # stream_level="DEBUG", # file_level="INFO", # fmt="%(asctime)s--%(filename)s--lineNO:%(lineno)d--%(levelname)s:%(message)s" # ): # # 设置日志收集器 # logger = logging.getLogger(name) # # 设置日志收集器level # logger.setLevel(logger_level) # # # 设置日志处理器 流处理器 # stream_handler = logging.StreamHandler() # # 设置日志处理器level # stream_handler.setLevel(stream_level) # # logger.addHandler(stream_handler) # # fmt = logging.Formatter(fmt) # # stream_handler.setFormatter(fmt) # # if file: # file_handler = logging.FileHandler(file, encoding="utf-8") # file_handler.setLevel(file_level) # logger.addHandler(file_handler) # file_handler.setFormatter(fmt) # # self.logger = logger # # # class LoggerHandler2(logging.Logger): # def __init__( # self, # name=None, # file=None, # logger_level="DEBUG", # stream_level="DEBUG", # file_level="INFO", # fmt="%(asctime)s--%(filename)s--lineNO:%(lineno)d--%(levelname)s:%(message)s" # ): # super().__init__(name, logger_level) # # self.setLevel(logger_level) # stream_handler = logging.StreamHandler() # stream_handler.setLevel(stream_level) # # self.addHandler(stream_handler) # # fmt = logging.Formatter(fmt) # stream_handler.setFormatter(fmt) # # if file: # file_handler = logging.FileHandler(file, encoding="utf-8") # file_handler.setLevel(file_level) # self.addHandler(file_handler) # file_handler.setFormatter(fmt) if __name__ == '__main__': logger = get_logger(file="log.txt") logger.debug("hello") logger.info("hello python") logger.warning("hello world") logger.error("hi") logger.critical("hi python")