Python自动化测试中yaml文件读取操作
本文详细介绍在Python自动化测试中如何使用PyYAML库读取配置文件。内容涵盖YAML基础语法、缩进规则、注释写法,以及通过open和load方法将YAML文件转换为Python字典或列表对象的具体代码示例,帮助测试人员高效管理测试数据。
YAML简介与安装
YAML(Yet Another Markup Language)是一种轻量级的标记语言。
- 它专为编写配置文件而设计,具有简洁直观和强大的特点。
- 其格式比JSON更直观,使用上也更为便捷。
- 典型的YAML文件扩展名为.test.yaml。
在Python环境中使用YAML前,需先安装相关库。
pip install pyyaml
YAML基本语法规范
掌握YAML的基本语法规则是正确解析文件的前提。
- YAML对大小写敏感,需注意键名的大小写一致性。
- 层级关系通过缩进来表示,而非括号或标签。
- 缩进时严禁使用Tab键,必须使用空格进行缩进。
- 缩进的空格数量没有严格限制,只要同一层级的元素左侧对齐即可。
- 使用#符号表示注释,从#到行尾的内容会被解析器忽略,这与Python的注释规则一致。
字典与列表的读取示例
YAML支持键值对结构,类似于Python中的字典(dict)。
一个基础的YAML文件示例如下所示。
user: admin
pwd: 123456
在Python中读取YAML文件的步骤如下:首先使用open方法读取文件内容,然后通过load方法将其转换为Python可操作的对象。这里的load函数与JSON库中的load功能相似。
#! /usr/bin/python3
# -*- coding:utf-8 -*-
# @Time : 2020/8/17 9:23
# @Author : 码上开始
import yaml
# 定义yaml文件路径
yaml_path = "E:\\study\\date.yaml"
# 打开yaml文件
file = open(yaml_path, "r", encoding="utf-8")
# 读取
string = file.read()
dict = yaml.load(string)
# 转换后数据类型为:dict
print(type(dict))
print(dict)
# 运行结果:
{'usr': 'admin', 'pwd': 123456}
YAML也支持序列(list)结构,用于表示有序的数据集合。
在YAML文件中定义数组时,需在每个元素前添加短横线‘-'符号。
- admin1
- admin2
- admin3
#! /usr/bin/python3
# -*- coding:utf-8 -*-
# @FileName: day6.py
# @Time : 2020/8/17 9:23
# @Author : 码上开始
import yaml
# 定义文件路径
yaml_path = "E:\\study\\date.yaml"
file = open(yaml_path, "r", encoding="utf-8")
string = file.read()
print(string)
# 转换后数据类型为列表
list = yaml.load(string, Loader=yaml.FullLoader)
print(list)
# 运行结果
<class 'list'>
['admin1', 'admin2', 'admin3']
纯量类型与混合结构应用
YAML支持纯量(str)类型,包括布尔值、整数、浮点数和空值。
# 布尔值true/false
n: true
# int
n1: 12
# float
n2: 12.3
# None
n3: ~
例如,{'n': True, 'n1': 12, 'n2': 12.3, 'n3': None}展示了不同类型的纯量值。
YAML允许混合使用字典和列表结构,以构建更复杂的数据配置。
- usr:
name: admin
pwd: 123456
- mail:
user: xxx@qq.com
pwd: 123456
运行上述混合结构示例的输出结果为:[{'usr': {'name': 'admin', 'pwd': 123456}}, {'mail': {'user': 'xxx@qq.com', 'pwd': 123456}}]。
测试实践与总结
练习建议:1. 熟悉上述基本语法和读取方法;2. 尝试将这些方法应用到实际的自动化测试代码中。
至此,关于Python自动化测试中YAML文件读取操作的介绍已完成。如需了解更多相关内容,可搜索本站往期文章或继续浏览后续文章,感谢支持!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













