东莞在那里建个网站,宁波网站制作公司排名,营销培训生,网站上怎么做动画广告视频在线观看目录#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结#xff08;尾部小惊喜#xff09; 前言
YAML 简介
YAML导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结尾部小惊喜 前言
YAML 简介
YAMLYet Another Markup Language的简写通常用来编写项目配置也可用于数据存储相比conf等配置文件要更简洁。
YAML 语法
支持的数据类型 字典、列表、字符串、布尔值、整数、浮点数、Null、时间等
基本语法规则 1、大小写敏感 2、使用缩进表示层级关系 3、相同层级的元素左侧对齐 4、键值对用冒号 “:” 结构表示冒号与值之间需用空格分隔 5、数组前加有 “-” 符号符号与值之间需用空格分隔 6、None值可用null 和 ~ 表示 7、多组数据之间使用3横杠—分割 8、# 表示注释但不能在一段代码的行末尾加 #注释否则会报错
注意网上查找到各种博客都提到yaml缩进时不能使用tab键但我在pycharm编辑器里实际使用时是可以使用tab键进行缩进的读写时并没有报错
安装第三方yaml文件处理库PyYAML
python没有自带的处理yaml文件的库需要下载第三方库PyYAML 或 ruamel.yaml 这里我们安装PyYAML。
pip install pyyaml# 下载速度慢的话加上清华镜像源
pip install pyyaml -i https://pypi.tuna.tsinghua.edu.cn/simple读取yaml文件
1、从yaml中读取字典
yaml中的字典格式如下
# yaml文件文件名为yamlData
os: Android
osVersion: 10
account:username: xiaoqqpassword: 123456
deviceName: null
appPackage: ~
bool1: True读取字典代码
import yamlwith open(./yamlData.yml, r, encodingutf-8) as f:result yaml.load(f.read(), Loaderyaml.FullLoader)
print(result, type(result))
print(result[os], type(result[os]))
print(result[osVersion], type(result[osVersion]))
print(result[account], type(result[account]))
print(result[account][username])
print(result[deviceName])
print(result[appPackage])
print(result[bool1], type(result[bool1]))读取结果
{os: Android, osVersion: 10, account: {username: xiaoqq, password: 123456}, deviceName: None, appPackage: None} class dict
Android class str
10 class int
{username: xiaoqq, password: 123456} class dict
xiaoqq
None
None
True class bool从读取结果可以看出 读取出来的数据不会改变原数据类型即yaml里是什么数据类型读出来就是什么类型。 Loaderyaml.FullLoader参数不写的话对结果不会有影响但运行时会出现警告信息。
yaml.load(f.read(), Loaderyaml.FullLoader)也可以写成yaml.load(f, Loaderyaml.FullLoader)读取出来的结果相同。
2、从yaml中读取list
yaml中list格式数据前加’-’ 并使用空格与数据间隔开如下
#yaml文件名yamlData
- Android
- 10
- null
- ~
- True读取list代码
import yamlwith open(./yamlData.yml, r, encodingutf-8) as f:result yaml.load(f.read(), Loaderyaml.FullLoader)
print(result, type(result))读取结果
[Android, 10, None, None, True] class list3、从yaml中读取元组
yaml中存储元组格式yaml中使用!!对数据类型进行转换yaml中tuple由list转换而来。如下
# yaml文件名yamlData
!!python/tuple
- Android
- 10
- null
- ~
- True读取元组代码
import yamlwith open(./yamlData.yml, r, encodingutf-8) as f:result yaml.load(f.read(), Loaderyaml.FullLoader)
print(result, type(result))读取结果
(Android, 10, None, None, True) class tuple在实际使用中很多的时候往往是多种类型嵌套的数据。如下yaml数据
# yaml文件名yamlDataos: Android
osVersion: 10
account:- username1: xiaoqq- password1: 123456- username2: Lilei- password2: 888888
deviceName: null
appPackage: ~
bool1: True读取结果
{os: Android, osVersion: 10, account: [{username1: xiaoqq}, {password1: 123456}, {username2: Lilei}, {password2: 888888}], deviceName: None, appPackage: None, bool1: True}4、从yaml中读取多组数据
yaml多组数据时每组数据之间需要用3横杠分隔’—如下
os: Android
osVersion: 10
account1:username1: xiaoqqpassword1: 123456
---
os: ios
osVersion: 12
account1:username2: Lileipassword2: 888888从yaml中读取多组数据时需要使用yaml.load_all()方法返回结果为一个生成器需要使用for循环语句获取每组数据。代码如下
import yamlwith open(./yamlData.yml, r, encodingutf-8) as f:result yaml.load_all(f.read(), Loaderyaml.FullLoader)print(result, type(result))for i in result:print(i)读取结果
generator object load_all at 0x000001F78EBD5B48 class generator
{os: Android, osVersion: 10, account1: {username1: xiaoqq, password1: 123456}}
{os: ios, osVersion: 12, account1: {username2: Lilei, password2: 888888}}写入yaml文件
1、单组数据写入yaml文件
使用yaml.dump()方法加入allow_unicodeTrue参数防止写入的中文乱码如下
import yamlapiData {page: 1,msg: 地址,data: [{id: 1,name: 学校}, {id: 2,name: 公寓}, {id: 3,name: 流动人口社区}],
}with open(./writeYamlData.yml, w, encodingutf-8) as f:yaml.dump(dataapiData, streamf, allow_unicodeTrue)写入结果
data:
- id: 1name: 学校
- id: 2name: 公寓
- id: 3name: 流动人口社区
msg: 地址
page: 12、多组数据写入yaml文件
使用yaml.dump_all()方法如下
import yamlapiData1 {page: 1,msg: 地址,data: [{id: 1,name: 学校}, {id: 2,name: 公寓}, {id: 3,name: 流动人口社区}],
}apiData2 {page: 2,msg: 地址,data: [{id: 1,name: 酒店}, {id: 2,name: 医院}, {id: 3,name: 养老院}],
}with open(./writeYamlData.yml, w, encodingutf-8) as f:yaml.dump_all(documents[apiData1, apiData2], streamf, allow_unicodeTrue)写入结果
data:
- id: 1name: 学校
- id: 2name: 公寓
- id: 3name: 流动人口社区
msg: 地址
page: 1
---
data:
- id: 1name: 酒店
- id: 2name: 医院
- id: 3name: 养老院
msg: 地址
page: 2在Python中除了PyYAML库之外还有ruamel.yaml库也可以对yaml文件进行读写操作。
下面是我整理的2023年最全的软件测试工程师学习知识架构体系图
一、Python编程入门到精通 二、接口自动化项目实战 三、Web自动化项目实战 四、App自动化项目实战 五、一线大厂简历 六、测试开发DevOps体系 七、常用自动化测试工具 八、JMeter性能测试 九、总结尾部小惊喜
在疲惫时坚持不懈在困难中挑战自我在迷茫时保持梦想。奋斗是人生的密码努力是成功的秘诀。相信自己的能力勇敢前行你将书写出属于自己的辉煌篇章。
人生犹如航行的船只奋斗是驶向成功的风帆不论风浪如何只需坚持航向扬起勇气的旗帜便能穿越苦难到达胜利的彼岸。相信自己敢于追逐梦想付出努力你将创造令人惊艳的人生奇迹。
生活可能会给你带来挫折和困难但不要屈服勇敢面对并奋力前行。坚持努力相信自己的潜能你能超越极限创造出令人惊叹的成就。