一文带你掌握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 pprintarea = {'山东': [{'济宁': ['邹城', '兖州', '曲阜', '泗水']},{'济南': ['历下区', '莱城区', '高新区']},'青岛','菏泽'],
'河北': ['石家庄', '廊坊', '张家口', '唐山'],
'直辖市': {'经济中心': '深圳', '行政中心': '北京', '金融中心': '上海'}}yaml = YAML(typ='safe')
with open(r'e:\area1.yaml','w', encoding='utf-8') as file:
yaml.dump(area,file)

输出结果为:

图片

总结

yaml文件数据相比json文件更加简洁,读取效率也更高,使用yaml文件存储序列化数据并进行数据驱动,会大幅提高自动化执行的效率。、

学习更多自动化测试技术、技巧,欢迎关注公众号伤心的辣条》,一定能为你的职业生涯添砖加瓦。

行动吧,在路上总比一直观望的要好,未来的你肯定会感 谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入扣群: 320231853,里面有各种软件测试+开发资料和技术可以一起交流学习哦。

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/642185.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【资源分享】Pr-最吊的视频剪辑软件

::: block-1 “时问桫椤”是一个致力于为本科生到研究生教育阶段提供帮助的不太正式的公众号。我们旨在在大家感到困惑、痛苦或面临困难时伸出援手。通过总结广大研究生的经验,帮助大家尽早适应研究生生活,尽快了解科研的本质。祝一切顺利!—…

milvus对象存储和消息中间件的工厂设计模式分析

milvus对象存储和消息中间件的工厂设计模式分析 需求 根据参数设置创建mq和storage mq有kafka,pulsar storage有local,minio,remote 配置文件 根据配置文件选择初始化mq和存储: mq:type: pulsarcommon:storageType: minio对于这种类型一个是mq,一个是存储&…

如何编写有效的接口测试?

导读:在所有的开发测试中,接口测试是必不可少的一项。有效且覆盖完整的接口测试,不仅能保障新功能的开发质量,还能让开发在修改功能逻辑的时候有回归的能力,同时也是能优雅地进行重构的前提。编写接口测试要遵守哪些原…

把 WordPress 变成 BaaS 服务:API 调用指南

有了前面两篇内容的铺垫,我们来聊聊 WordPress 作为 CMS / BaaS 服务使用时绕不开的问题,API 调用。 这篇内容同样的,会尽量少贴代码,简单的讲清楚一件事,降低阅读负担。 写在前面 首先,我们需要进行清晰…

开发同城O2O跑腿系统源码:构建高效便捷的本地服务平台教程

为了满足用户对便捷的需求,今天我们将一同探讨如何开发一个高效便捷的同城O2O跑腿系统,以构建一个功能全面、操作简单的本地服务平台。 一、确定需求和功能 在开发同城O2O跑腿系统之前,首先需要明确系统的需求和功能。用户可以通过该系统发布…

智能仓储物流系统(Wms)系列

好的应用系统应是细分简单,界面简洁易操作,程序代码简洁易懂的。 大模块划分: 入库,收货,上架、出库,分配,发货、管理,查询,调整、基础数据、系统管理 入库&#xff0…

一维递归:递去

示例&#xff1a; /*** brief how about recursive-forward-1? show you here.* author wenxuanpei* email 15873152445163.com(query for any question here)*/ #define _CRT_SECURE_NO_WARNINGS//support c-library in Microsoft-Visual-Studio #include <stdio.h>…

国内首个48小时大模型极限挑战赛落幕,四位“天才程序员”共同夺冠

4月21日晚&#xff0c;第四届ATEC科技精英赛&#xff08;ATEC2023&#xff09;线下赛落幕。本届赛事以大模型为技术基座&#xff0c;围绕“科技助老”命题&#xff0c;是国内首个基于真实场景的大模型全链路应用竞赛。ATEC2023线下赛采用48小时极限挑战的形式&#xff0c;来自东…

世界读书日 | 开发者必读书单重磅来袭,华为云DTSE专家天团力荐

春色恰如许&#xff0c;读书正当时。 读书&#xff0c;就像解锁一把神秘钥匙&#xff0c;为开发者洞开新世界的大门&#xff0c;赋予他们破译复杂难题的能力、挑战未知领域的勇气。书页翻动间&#xff0c;开发者得以站在巨人的肩膀上&#xff0c;汲取前人经验&#xff0c;积蓄…

嵌入式学习59-ARM8(中断,ADC,内核定时器和传感器)

什么是中断顶半部和底半部 &#xff1f; &#xff08;部分记忆&#xff09;背 上半部&#xff1a; …

循环队列中学习

循环队列中&#xff0c;由于入队时尾指针向前追赶头指针;出队时头指针向前追赶尾指针&#xff0c;造成队空和队满时头尾指针均相等。因此&#xff0c;无法通过条件frontrear来判别队列是"空"还是"满"。 解决这个问题的方法至少有两种: ① 另设一布尔变量…