在自动化测试数据存储中,比较常见的有csv、json、excel文件等,可能大家忽略了另外一个非常简单、好用的,而且更简洁的文件,那就是咱们今天的主角yaml文件。
yaml文件是一种数据序列化语言,其良好的跨语言、跨平台、易于理解、格式简单而广泛应用于配置文件、数据文件、日志文件等,因为采用了缩进方式表示层级关系,在python语言中使用就显得更加亲切。
Yaml文件特点
有人这么对比json和yaml,它们就像是两个漂亮的小姐姐,只是yaml的裙子更短些。
yaml数据虽然简洁,但也要遵循一些规则:
-
大小写敏感
-
使用缩进表示层级关系
-
缩进时不允许使用Tab键,只允许使用空格
-
缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
-
使用#进行注释,从这个字符一直到行尾,都会被解析器忽略
Yaml文件的组成
我们把行政区域划分作为案例,使用超级记事本创建一个文本文件,并重命名为yaml格式,编码集改为UTF-8格式,实现如下:
从上图中可以看出,一个yaml文件的组成包括三部分:
对象:可以理解为python的字典,是以键值对形式出现的,如上图中的【行政中心: 北京】就是一组对象,注意冒号后需要有一个空格。
数组:可以理解为python的列表,是以-开头来标记(短杠后也要有一个空格),上图中的济宁、济南、青岛和菏泽就是隶属山东的四个元素,他们就是一个数组结构。
标量:对应到 Python 的字符串、整数、浮点数等基本数据类型,可以通过下面的案例理解。
Python操作Yaml文件
1、安装ruamel.yaml
ruamel.yaml是pyyaml的衍生版,可以支持YAML类型文件最新版本,安装命令:
pip install ruamel.yaml
2、python中读取yaml文件
其实就是将yaml格式的数据转化为python中的数据类型(字典、列表及基本类型)的过程。
以读取上文中area.yaml文件中数据为例:
from ruamel.yaml import YAML
import pprint # 美化输出数据
yaml = YAML(typ='safe')
with open(r'e:\area.yaml',“r“,encoding='utf-8') as file:
data = yaml.load(file)
pprint.pprint(data)
输出结果为:
3、python输出数据到yaml文件
其实是将python中的字典、列表等数据类型写入yaml格式文件中。
from ruamel.yaml import YAML
import pprint
area = {'山东': [{'济宁': ['邹城', '兖州', '曲阜', '泗水']},
{'济南': ['历下区', '莱城区', '高新区']},
'青岛',
'菏泽'],
'河北': ['石家庄', '廊坊', '张家口', '唐山'],
'直辖市': {'经济中心': '深圳', '行政中心': '北京', '金融中心': '上海'}}
yaml = YAML(typ='safe')
with open(r'e:\area1.yaml','w', encoding='utf-8') as file:
yaml.dump(area,file)
输出结果为:
总结
yaml文件数据相比json文件更加简洁,读取效率也更高,使用yaml文件存储序列化数据并进行数据驱动,会大幅提高自动化执行的效率。、
学习更多自动化测试技术、技巧,欢迎关注公众号伤心的辣条》,一定能为你的职业生涯添砖加瓦。
行动吧,在路上总比一直观望的要好,未来的你肯定会感 谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入扣群: 320231853,里面有各种软件测试+开发资料和技术可以一起交流学习哦。
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!