#一:封装读取yaml文件的脚本YAMLUtils.py
# 1.在打开文件之前应先判断该文件是否存在,我们将判断写在类的初始化方法中
class YAMLUtils:
def __init__(self, filepath):
# 判断添加
if os.path.exists(filepath):
self.yamlfile = filepath
else:
raise FileNotFoundError("文件不存在")
# 在初始化的最后我们加上一个默认参数,用于判断文件是否已经被读取
self._all_data = None
# 2.判断文件是否存在后,我们尝试读取文件(为了防止重复读取,我们需做一个判断)
def safe_load_all(self):
# 判断文件是否已经读取
if not self._all_data: # 因为if None 就代表条件为false,所以在前面添加一个not,便是如果_all_data没有值的话,就执行判断语句下的代码
# 第一步:我们读取文件
with open(self.yamlfile, 'rb') as f:
# 第二步:我们获取所读取文件中的值
self._all_data = list(yaml.safe_load_all(f)) # 注:该处应该将yaml读取后的内容用list()转化成列表的形式展示
# 第三步:我们将获取到的文件内容返回出去
return self._all_data
#二:封装读取配置文件内容的脚本ConfigUtils.py
#1.使用safe_load_all读取配置文件后,我们需要获取到文件中各字典内容对应的具体key-values,所以我们需要创建一个YAMLUtils的对象,首先我们先获取到yaml文件的地址
# 当前文件的绝对路径
current = os.path.abspath(__file__)
# 当前文件的父级目录
BASE_DIR = os.path.dirname(current) #以上两行代码也可以使用 BASE_DIR = os.getcwd()代替
# 定义config目录路径 -- os.sep是分隔符
_conf_file = BASE_DIR + os.sep + "config.yaml"
#定义一个方法返回yaml文件的路径
def get_config_file():
return _conf_file
class ConfigUtils:
#我们将创建YAMLUtils对象的操作放在初始化方法中
def __init__(self):
self.yamlconfig = YAMLUtils(get_config_file()).safe_load_all()
#定义获取具体key-values的方法,例如测试环境的地址
def get_conf_qaurl(self):
return self.yamlconfig[0].get('QAURL')
#我们创建该类的对象,当其他模块引用的时候直接引用该对象
config = ConfigUtils()
yaml文件的示例:
#测试环境链接
---
QAURL: 'http://www.baidu.com'
#地址
---
Stageurl: 'https://www.xinlang.com'