Python YAML 模块使用教程:接口测试参数存储与配置

Python YAML 模块使用教程:接口测试参数存储与配置

文章目录

一、YAML介绍

YAML 是一种数据序列化语言,用于以人类可读的形式存储信息。其最初代表“Yet Another Markup Language”,后更改为“YAML Ain’t Markup Language”(YAML 不是一种标记语言),以区别于传统标记语言。

1.1 核心特点

  • 简洁易读:语法简洁,减少 JSON、XML 中的引号、括号等“噪音”格式;
  • 非编程语言:主要用于存储配置信息,不具备编程逻辑;
  • 缩进敏感:缩进规则类似 Python,通过缩进来表示层级关系;
  • 区分大小写:对键名、值的大小写严格区分;
  • 禁用 Tab 键:不允许使用制表符缩进,需通过空格实现缩进(部分编辑器可配置 Tab 自动转为空格)。

1.2 支持的数据类型及语法对比(与JSON)

YAML 文件后缀名为 .yaml.yml(常用 .yml),支持多种数据类型,其语法与 JSON 对比如下:

数据类型YAML 语法JSON 语法
简单标量值key: value{"key": "value"}
整数和浮点数int_key: 123
float_key: 123.456
{"int_key": 123, "float_key": 123.456}
布尔值bool_key: true{"bool_key": true}
字符串string_key: “This is a string”{"string_key": "This is a string"}
列表list_key:
- item1
- item2
- item3
{"list_key": ["item1", "item2", "item3"]}
映射(字典)map_key:
sub_key1: sub_value1
sub_key2: sub_value2
{"map_key": {"sub_key1": "sub_value1", "sub_key2": "sub_value2"}}
嵌套结构nested_key:
list_key:
- item1
- item2
map_key:
sub_key1: sub_value1
sub_key2: sub_value2
{"nested_key": {"list_key": ["item1", "item2"], "map_key": {"sub_key1": "sub_value1", "sub_key2": "sub_value2"}}}

1.3 语法辅助工具

若对 YAML 语法不熟悉,可使用 JSON 转 YAML 工具快速生成,生成后需二次检查格式正确性。

工具地址:https://www.jashtool.com/json/to-yaml

示例:

在这里插入图片描述

二、YAML 使用(Python 环境)

在 Python 中使用 YAML 需借助 PyYAML 库,主要用于读取、写入、清空 YAML 配置文件,适用于接口自动化测试中的参数存储、配置管理等场景。

2.1 安装 PyYAML 库

安装命令:

pip install PyYAML 

安装后可通过pip list查看是否安装成功

2.2 核心操作(读取、写入、清空)

2.1 追加写入 YAML 文件

向指定 YAML 文件追加数据(若文件不存在则自动创建):

import yaml import os defwrite_yaml(filename, data):# 拼接文件路径(默认在项目根目录的 data 文件夹下) file_path = os.getcwd()+"/data/"+ filename # 以追加模式打开文件,指定编码为 utf-8withopen(file_path, encoding="utf-8", mode="a+")as f:# 安全写入数据,支持 Unicode 字符 yaml.safe_dump(data, stream=f, allow_unicode=True)
2.2 读取 YAML 文件数据

根据指定键读取 YAML 文件中的对应值:

import yaml import os defread_yaml(filename, key): file_path = os.getcwd()+"/data/"+ filename withopen(file_path, encoding="utf-8", mode="r")as f:# 安全加载 YAML 数据 data = yaml.safe_load(f)# 返回指定键对应的值return data[key]
2.3 清空 YAML 文件

清空指定 YAML 文件中的所有内容:

import os defclear_yaml(filename): file_path = os.getcwd()+"/data/"+ filename withopen(file_path, encoding="utf-8", mode="w")as f:# 清空文件内容 f.truncate()

2.3 完整使用示例

import yaml import os # 追加写入defwrite_yaml(filename, data): file_path = os.getcwd()+"/data/"+ filename withopen(file_path, encoding="utf-8", mode="a+")as f: yaml.safe_dump(data, stream=f, allow_unicode=True)# 读取defread_yaml(filename, key): file_path = os.getcwd()+"/data/"+ filename withopen(file_path, encoding="utf-8", mode="r")as f: data = yaml.safe_load(f)return data[key]# 清空defclear_yaml(filename): file_path = os.getcwd()+"/data/"+ filename withopen(file_path, encoding="utf-8", mode="w")as f: f.truncate()# 测试函数deftest_yml():# 1. 写入 YAML 文件(数据为字典类型) data ={"str":"12345","user":"zhangsan","password":"123456"} write_yaml('test.yml', data)# 2. 读取 YAML 文件中 "str" 键对应的值 ret = read_yaml('test.yml',"str")print("读取结果:", ret)# 输出:读取结果: 12345# 3. 清空 YAML 文件 clear_yaml('test.yml')# 执行测试if __name__ =="__main__": test_yml()

2.4 关键说明

  • yaml.safe_dump():安全写入数据,避免执行恶意代码,推荐优先使用(而非 yaml.dump());
  • yaml.safe_load():安全加载数据,同样用于防范恶意代码,避免使用 yaml.load()(存在安全风险);
  • 文件路径:示例中默认将 YAML 文件放在项目根目录的 data 文件夹下,需确保该文件夹已创建,否则会抛出文件不存在异常;
  • 编码格式:指定 encoding="utf-8" 避免中文等特殊字符出现乱码。

Read more

JetBrains 内的 GitHub Copilot Agent Mode + MCP:从配置到实战

JetBrains 内的 GitHub Copilot Agent Mode + MCP:从配置到实战

1. 背景说明:Agent Mode 与 MCP 的意义 Agent Mode 是 GitHub Copilot 的新形态,它能理解自然语言指令,自动拆分任务,遍历项目文件,执行命令并修改代码,像一个“自主项目助手”一样工作。 Model Context Protocol (MCP) 是一套用于 Copilot 调用外部工具的协议标准,让 Agent Mode 能访问终端、读写文件、检查代码等能力。 JetBrains 自 2025 年 5 月起已提供 Agent Mode + MCP 公测支持。最新版的插件已经是正式的非Preview版本。 2. JetBrains 中如何启用 Agent Mode (1)

By Ne0inhk

读李宁老师的《AIGC 自动化编程 -- 基于 ChatGPT和 GitHub Copilot》

对“李宁”这个名字,最有印象的,除了体操王子,就是一位计算机图书领域的作者了。前几年就买过一本他写的 python(《Python从菜鸟到高手》)的书,感觉深入浅出,理解深刻,行文易懂。所以对作者怀有敬意和好感。 这几天翻阅他的这本 2023/10月出版的《AIGC 自动化编程 -- 基于 ChatGPT和 GitHub Copilot》这本书,虽然时光荏苒,技术进步飞速,书中有些内容已经过时,但是看到其中核心思想 -- 解决复杂问题,通用的做法就是先分解后合并,还是颇有裨益,于我心戚戚耶。遗憾没有早几年接触到这本书。 从2024 年初的 ChatGPT 大火,然后 2025年初DeepSeek 的横空出世(对普罗大众而言),到 2025 年底,Google Genimi 3的发布,LLM

By Ne0inhk

AI编程工具深度对比:Cursor、Copilot、Trae与Claude Code,2025年开发者该如何选择?

2025年,AI编程助手已从新奇技术演变为生产力核心,但面对众多选择,开发者如何才能找到最适合自己的智能编程伙伴? 一、四大AI编程工具的核心定位与市场格局 2025年的AI编程工具市场已经形成了明显的分层格局。根据最新的开发者使用数据,这些工具不再仅仅是代码补全助手,而是朝着专业化、场景化方向发展。

By Ne0inhk