一、思考❓❔
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!
注册 关于