Python自动化 Python VS Java:处理 yaml 数据谁更简单呢-99.99%的人都收藏了

kouyou · 2020年03月25日 · 33 次阅读

一、思考❓❔

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在自动化测试和测试开发中都有广泛应用
  • 本文为可优原创,如有不足,请多多指教

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册