parse_yaml.py

import os

import yaml
######解析yaml文件得到我们方便调用的想要的数据格式,3步


#####1.先解析所有的yaml文件,解析出来的结果是一个字典,key的名称是每一个yaml文件中的牌头,value也是一个字典,
#######它的key是yaml中的dec和parameters,value是他们各自下面的内容
def parse_allyaml():
all_yaml=dict()
path_allyaml=os.path.abspath(os.path.join(os.path.dirname(os.path.dirname(__file__)),'Params'))

for root,dirs,files in os.walk(path_allyaml):
#print(root) #root,表示()中的路径的所有子目录的路径,包括他自己,所以root遍历的次数就是()中路径下子目录数量+1,类型是字符串
#print(dirs) #dirs,表示的是,由每一个root下的yaml目录名称构成的列表,没有目录则为空列表
#print(files) #files,表示的是,由每一个root下yaml文件名称构成的列表,没有文件则为空列表

for file_name in files:
path_all_yaml_files=os.path.join(root,file_name)
#print('path:',path_all_yaml_files)
with open(path_all_yaml_files,'r',encoding='utf-8')as f:
every_yamldic=yaml.safe_load(f)
# 这里是用yaml中的safe_load()方法解析每一个yaml文件,那么这里的very_yamldic就是由每一个yaml文件解析来的只有一个键值对的字典
#print(every_yamlfile)
all_yaml.update(every_yamldic)#添加到一个字典里面去,返回
return all_yaml

#print(parse_allyaml())


########2,再把yaml中的数据转化为我们想要格式,我们只要parameters(文件的牌头作为键,值是parameters下的键值对组成的一个个字典构成的列表)
##########这里用到字典的items()方法取值


def GetAllData():
all_data=dict()
all_yaml=parse_allyaml()
for key,value in all_yaml.items():
all_data[key]=value['parameters']#由于这里的value也是一个字典,取出我们要的部分作为新的value保存到新的字典中
return all_data

#print(GetAllData())


##########3,最后再按照yaml文件的牌头名称取到测试数据,把每一个yaml文件中的path,data,和header分别添加集中到一个列表,
##########方便后面写用例时候调用,这一步相当于定义测试数据集,方便调用

###调用的时候我们是按照yaml文件中的牌头名来调用的,所以先定义一个按照牌头名称来从all_data中获取的方法
def get_by_name(name):
all_data=GetAllData()
test_data=all_data[name]
return test_data
#print(get_by_name('Demo1_1'))

class Demo1_1():#注意我们定义类的名称和yaml牌头名称一致,方便些用例的时候调用
test_data=get_by_name('Demo1_1')#获取牌头是Demo1_1中的parameters下的数据
path=[]
data=[]
header=[]
for x in test_data:
path.append(x['path'])
data.append(x['data'])
header.append(x['header'])

class Demo1_2():
test_data=get_by_name('Demo1_2')
path=[]
data=[]
header=[]
for x in test_data:
path.append(x['path'])
data.append(x['data'])
header.append(x['header'])

class Demo2_1():
test_data=get_by_name('Demo2_1')
path=[]
data=[]
header=[]
for x in test_data:
path.append(x['path'])
data.append(x['data'])
header.append(x['header'])





posted @ 2022-03-11 12:19  我的博客16000  阅读(104)  评论(0编辑  收藏  举报