跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Python

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

介绍 YAML 数据序列化语言的核心特点及与 JSON 的语法对比。重点讲解在 Python 环境中如何使用 PyYAML 库进行 YAML 文件的读取、写入和清空操作。通过提供完整的代码示例,展示了如何配置接口测试所需的参数存储方案,并强调了使用 safe_load 和 safe_dump 的安全性及文件路径编码注意事项。

萤火微光发布于 2026/3/30更新于 2026/10/2491 浏览
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\nfloat_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:\n- item1\n- item2\n- item3{"list_key": ["item1", "item2", "item3"]}
映射(字典)map_key:\nsub_key1: sub_value1\nsub_key2: sub_value2{"map_key": {"sub_key1": "sub_value1", "sub_key2": "sub_value2"}}
嵌套结构nested_key:\nlist_key:\n- item1\n- item2\nmap_key:\nsub_key1: sub_value1\nsub_key2: sub_value2{"nested_key": {"list_key": ["item1", "item2"], "map_key": {"sub_key1": "sub_value1", "sub_key2": "sub_value2"}}}
1.3 语法辅助工具

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

二、YAML 使用(Python 环境)

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

2.1 安装 PyYAML 库

安装命令:

pip install PyYAML

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

2.2 核心操作(读取、写入、清空)
2.2.1 追加写入 YAML 文件

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

import yaml
import os

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

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

import yaml
import os

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

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

import os

def clear_yaml(filename):
    file_path = os.getcwd() + "/data/" + filename
    with open(file_path, encoding="utf-8", mode="w") as f:
        # 清空文件内容
        f.truncate()
2.3 完整使用示例
import yaml
import os

# 追加写入
def write_yaml(filename, data):
    file_path = os.getcwd() + "/data/" + filename
    with open(file_path, encoding="utf-8", mode="a+") as f:
        yaml.safe_dump(data, stream=f, allow_unicode=True)

# 读取
def read_yaml(filename, key):
    file_path = os.getcwd() + "/data/" + filename
    with open(file_path, encoding="utf-8", mode="r") as f:
        data = yaml.safe_load(f)
        return data[key]

# 清空
def clear_yaml(filename):
    file_path = os.getcwd() + "/data/" + filename
    with open(file_path, encoding="utf-8", mode="w") as f:
        f.truncate()

# 测试函数
def test_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" 避免中文等特殊字符出现乱码。

目录

  1. 一、YAML 介绍
  2. 1.1 核心特点
  3. 1.2 支持的数据类型及语法对比(与 JSON)
  4. 1.3 语法辅助工具
  5. 二、YAML 使用(Python 环境)
  6. 2.1 安装 PyYAML 库
  7. 2.2 核心操作(读取、写入、清空)
  8. 2.2.1 追加写入 YAML 文件
  9. 2.2.2 读取 YAML 文件数据
  10. 2.2.3 清空 YAML 文件
  11. 2.3 完整使用示例
  12. 追加写入
  13. 读取
  14. 清空
  15. 测试函数
  16. 执行测试
  17. 2.4 关键说明

更多推荐文章

查看全部
  • 大模型降低 AIGC 率的指令优化实战指南
  • C++ 手写 JSON 与 HTTP 协议实现 Web 计算器服务器
  • Clawdbot 部署指南:反向代理与 WebAuth 配置
  • VSCode GitHub Copilot 插件模型加载失败排查指南
  • Stable Diffusion 底模与 VAE 搭配指南:提升生成质量的核心策略
  • 1Panel 部署 Open WebUI 镜像加速:ghcr.io 切换至国内镜像源
  • 从 Copilot 到 Agentic:大型组织如何重构人×AI×流程研发范式
  • OpenClaw 5 步调教指南:让 AI 助手真正“能干活”
  • 2024 大模型技术学习路线与实战指南
  • 前端地图开发基础:服务类型、坐标系与 SDK 简介
  • C++ 图论最短路径算法:Dijkstra、Bellman-Ford 与 Floyd
  • Python 环境变量配置与验证指南
  • React Native 集成虹软 ArcFace 人脸识别实战指南
  • VLA 机器人革命:解析 10 篇关键视觉 - 语言 - 动作模型论文
  • 基于火山引擎即梦 API 的数字人视频生成 Streamlit Demo
  • Moltbot:让 Claude 从聊天工具转变为可落地 AI Bot
  • OpenClaw + cpolar 实现本地 AI 公网访问教程
  • 基于 Linux epoll ET 模式的 Reactor 网络服务器实现
  • ReAct Agent 与 Agent 编排:从单 Agent 闭环到多 Agent 协作
  • 动态规划基础:树型 DFS、回溯与记忆化搜索

相关免费在线工具

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online