一、思考❓❔
1.什么是yaml?
- 与XML、json一样均为数据格式(非数据类型)
- 相比XML和json,yaml更简洁,传输、承载数据的效率更高
- 跨语言
- 所有编程语言(java、python、php等)都支持
- 跨平台
- 所有平台都支持(Windows、linux、Mac等)
- 应用非常广泛
2.Python和Java中处理yaml的常用模块有哪些呢?
-
在Python中
-
pyyaml:使用更广泛
-
ruamel.yaml:是pyyaml的衍生版
-
-
在Java中
- Jackson Dataformat YAML
- SnakeYAML:使用更广泛
二、案例演练??
1.Python中安装pyyaml
- 使用豆瓣pypi源来安装(推荐)
pip install -i https://pypi.douban.com/simple PyYAML
2.Java中从Maven仓库加载SnakeYAML
在pom.xml中添加如下内容:
<!-- https://mvnrepository.com/artifact/org.yaml/snakeyaml --> <dependency> <groupId>org.yaml</groupId> <artifactId>snakeyaml</artifactId> <version>1.25</version> </dependency>
3.基本用法
-
Python中在项目根目录下创建user_info.yaml文件,Java中在src\test\resources中创建
# yaml数据缩进要一致,往往空两个字符 users: name: "可优" age: 18 gender: "男" other: hobby: "装大佬" lover: "柠檬小姐姐"
-
python代码进行解析(解析为嵌套字典的字典)
# 1. 导入模块 import yaml # 2. 打开yaml文件,并加载 with open("user_info.yaml", encoding="utf-8") as file: data = yaml.full_load(file) print(data)
打印结果为:
{'users': {'name': '可优', 'age': 18, 'gender': '男'}, 'other': {'hobby': '装大佬', 'lover': '柠檬小姐姐'}}
-
java代码进行解析(解析为嵌套HashMap的HashMap)
// 1. 导入Yaml包 import org.yaml.snakeyaml.Yaml; import java.util.HashMap; public class HandleYamlUtils { public static void main(String[] args) { // 2. 创建Yaml对象 Yaml yaml = new Yaml(); // 3. 加载yaml文件 // 使用HashMap来接收 HashMap<String, HashMap<String, Object>> hashMap = yaml.load(HandleYamlUtils.class.getResourceAsStream("/user_info.yaml")); System.out.println(hashMap); } }
打印结果为:
{users={name=可优, age=18, gender=男}, other={hobby=装大佬, lover=柠檬小姐姐}}
4.解析列表(List)数据
创建user_info.yaml文件
# - 代表解析为列表数据 - name: "可优" age: 18 gender: "男" other: hobby: "装大佬" lover: "柠檬小姐姐" - name: "柠檬小姐姐" age: 17 gender: "女" other: hobby: "学软件测试" lover: "可优"
- Python处理方式不变,java需要使用List来接收
// 1. 导入Yaml包 import org.yaml.snakeyaml.Yaml; import java.util.HashMap; public class HandleYamlUtils { public static void main(String[] args) { // 2. 创建Yaml对象 Yaml yaml = new Yaml(); // 3. 加载yaml文件 // 需要使用List来接收 List<HashMap<String, Object>> hashMapList = yaml.load(HandleYamlUtils.class.getResourceAsStream("/user_info.yaml")); } }
-
打印结果为:
[{name=可优, age=18, gender=男, other={hobby=装大佬, lover=柠檬小姐姐}}, {name=柠檬小姐姐, age=17, gender=女, other={hobby=学软件测试, lover=可优}}]
三、总结??
- 本文介绍了使用Python和Java分别处理同一个yamal文件,很明显使用Python来处理更简单,而Java执行效率更高
- yaml文件读取效率非常高,适合存放测试数据
- yaml在自动化测试和测试开发中都有广泛应用
- 本文为可优原创,如有不足,请多多指教
欢迎来到testingpai.com!
注册 关于