一文带你掌握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,里面有各种软件测试+开发资料和技术可以一起交流学习哦。

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CST电磁仿真软件的激励设置和使用场导入【基础教程】

设置平面波激励 确认平面波的特性! Simulation > Sources and Loads > Plane Wave 通过Plane Wave在远离观测对象的位置接通场源(Field Source),进行入射波的仿真分析该功能主要在RCS(Radar Cross Section)和EMS(Electromagnetic Susceptibilit…

vuex数据永久存续

第一步下载 vuex 并创建store下js文件 第二步 npm install vuex-persistedstate 第三步 引用 vuex-persistedstate 配置 plugins 项 import createPersistedState from vuex-persistedstateplugins:[createPersistedState({//存储方式:localStorage\sessionStor…

Linux - tar (tape archive)

tar 的全称是 Tape Archive。它最初是在 Unix 系统中用于将数据写入磁带的工具,但现在它通常用于创建、维护、修改和提取文件的归档文件。尽管 tar 可以用于压缩和解压缩文件,但它本身并不进行压缩,而是通常与 gzip 或 bzip2 等压缩工具一起使…

阿赵UE学习笔记——29、Niagara制作火焰效果

阿赵UE学习笔记目录 大家好,我是阿赵。   继续学习虚幻引擎,之前简单介绍了Niagara粒子系统,这次用Niagara系统做一个火焰的效果。 一、创建发射器 和之前介绍的一样,先创建一个空白的发射器: 我把这个发射器命名为…

如何利用亚马逊云科技上的Amazon Bedrock构建负责任的AI?

AI安全是最近非常热门的话题,无论是训练数据全生命周期保护、模型安全、AI安全与合规等,今天我们来介绍一个新兴的AI安全话题—负责任(Responsible)的AI 1️⃣什么是负责任的AI? 所谓负责任,就是通过构建AI治理框架,让…

【运营】画像-分析方法

画像,是建立在真实数据基础上的主体代表。 1.分析 现在手上有一些原始数据,需要通过分析来展现出主体真实的使用情况,因为我们是新能源行业,所以这次就拿放电设备的电池、充电设备的机柜、使用电池的用户三个角度来讨论一下如何从…

Fork for Mac v2.42 激活版 Git客户端

Fork for Mac是一款运行在Mac平台上的Git客户端,Fork Mac版具备基本的取、推、提交、修改、创建和删除分支和标签、创建和删除远程备份等功能,还有实用的差异查看器,你可以通过清晰的视图快速发现源代码中的更改。 Fork for Mac v2.42 激活版…

旅游网站制作流程

旅游网站制作流程是一个较复杂的过程,因为它需要结合市场调研、用户需求、内容构建、技术开发等多个方面。在这篇文章中,我将简单介绍一下旅游网站的制作流程,大致分为以下步骤。 第一步:市场调研 在制作旅游网站前,我…

企业级AR人脸特效解决方案,引领美颜新风尚

美摄科技凭借自研AI算法和人脸识别技术,推出了一款面向企业的AR人脸特效解决方案,旨在为企业提供全方位、高品质的人脸美颜效果,助力企业在激烈的市场竞争中脱颖而出。 美摄科技的AR人脸特效解决方案,具备强大的美颜美型功能。通…

服务器基础知识(1)

🐌博主主页:🐌​倔强的大蜗牛🐌​ 📚专栏分类:服务器❤️感谢大家点赞👍收藏⭐评论✍️ 1、什么是服务器 服务器是计算机的一种,它比普通计算机运行更快、负载更高、价格更贵。服务…

springboot整合rabbitMQ系列10 利用插件实现延时消息

插件的安装,本文就不做描述了,插件安装后如下,就说明安装成功了1 添加pom依赖,yml配置就不讲了2 核心类,定义交换机的代码改成如下,其它的定义队列,设置绑定关系,设置死信等&#xf…

virtualbox 网络设置实现主机和虚拟机互相访问

前言 一般来说,virtualbox 虚拟机的上网模式是 NAT。这样虚拟机可以上网并访问宿主机,但宿主机无法访问虚拟机,也无法 ping 通。下面介绍双网卡模式,实现虚拟机和宿主机能够互相访问 ping 通。 双网卡模式 进入虚拟机的网络设置…

linq select 和selectMany的区别

Select 和 SelectMany 都是 LINQ 查询方法&#xff0c;但它们之间有一些区别。 Select 方法用于从集合中选择特定的属性或对集合中的元素进行转换&#xff0c;并返回一个新的集合。例如&#xff1a; var numbers new List<int> { 1, 2, 3, 4, 5 }; var squaredNumbers…

网络 (基础概念, OSI 七层模型, TCP/IP 五层模型)

网络互连 网络互连: 将多台计算机连接在一起, 完成数据共享 数据共享的本质是网络数据传输, 即计算机之间通过网络来传输数, 也叫做网络通信 根据网络互连的规模不同, 将网络划分为局域网和广域网 注意: 局域网和广域网是相对的概念 局域网LAN 又称内网, 局域网和局域网之间在没…

jmeter 指定QPS压测接口

文章目录 jmeter 指定QPS压测接口更换语言为中文创建测试任务新建线程组右键线程组&#xff0c;新建http request&#xff0c;填写要你要压测的接口地址、参数如果需要自定义请求头&#xff0c;添加一个Http头信息管理器要查看结果和QPS统计数据&#xff0c;给上门的http请求添…

16.C++常用的算法_算数生成算法

文章目录 遍历算法1. accumulate()代码工程运行结果 2. fill()代码工程运行结果 遍历算法 1. accumulate() 代码工程 第三个参数为累加的起始值&#xff0c;如果没有特殊需求写0即可; 需要注意包含头文件#include<numeric>#define _CRT_SECURE_NO_WARNINGS #include&l…

探索早期投资的奥秘:符文(Runes)生态系统的崛起

随着加密市场的迅速发展&#xff0c;投资者们对早期项目的关注越来越高。在这个充满变数和机遇的领域里&#xff0c;抢占先机意味着可能获得巨大的回报。符文&#xff08;Runes&#xff09;生态系统作为近期备受瞩目的项目之一&#xff0c;引发了众多投资者的兴趣。本文将深入探…

A Neural Span-Based Continual Named Entity Recognition Model

《A Neural Span-Based Continual Named Entity Recognition Model》------------AAAI’23 论文链接&#xff1a;https://arxiv.org/abs/2302.12200 代码&#xff1a;https://github.com/Qznan/SpanKL 当前问题&#xff1a; 1.现有的NER模型在适应新的实体类型时往往表现不佳…

漏洞发生时,企业应该怎么做?

2021年&#xff0c;相关法律法规的完善极大促进了中国网络安全行业的发展&#xff0c;基于企业稳定运营、安全运营的原则&#xff0c;越来越多的领域投入到企业安全合规的建设中来。但现状是&#xff0c;随着安全建设的不断深入&#xff0c;各项出台的法规、政策并不一定能充分…

Python 异常处理与日志记录

&#x1f47d;发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 异常处理是任何编程语言中的重要组成部分&#xff0c;Python 也不例外。Python 提供了丰富的…