一文带你掌握yaml文件的使用

在自动化测试数据存储中,比较常见的有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,里面有各种软件测试+开发资料和技术可以一起交流学习哦。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值