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

【AI】coze的简单入门构建智能体

【AI】coze的简单入门构建智能体

前言:最近扣子很火,我来学习一下!扣子时新一代的AI应用平台。在扣子上搭建AI应用,只需要在界面上点击下一步下一步,做些配置,就可以快速去搭建一个AI应用。让我来看看,扣子是何方神圣吧~ 一、什么是coze? 扣子是新一代AI应用开发平台。无论你是否有编程基础,都可以在扣子上快速搭建基于大模型的各类AI应用,并将AI应用发布到各个社交平台,也可以通过API或SDK将AI应用集成到你的业务系统中。 二、coze能做什么? 扣子提供可视化设计与编排工具,通过零代码或低代码方式,快速搭建基于大模型的各类AI项目。(登录到扣子官网,进入到商店,有各种应用、插件等) * 智能体:智能体是基于对话的AI项目,能理解自然语言,调用知识库与插件,通过可视化工作流完成复杂任务,并可发布到多端使用,如智能客服、虚拟伴侣等 * 应用:利用大模型技术开发的应用程序。在扣子中搭建的AI应用具备完整业务逻辑和可视化用户界面,是一个独立的AI项目,如AI搜索、翻译工具等 * 插件:是 一个工具集,一个插件内可以包括一个或多个工具(API)。用于扩展智能体 / Bot 的功能,通过标准化接口与工作

By Ne0inhk
从0到1彻底掌握Trae:手把手带你实战开发AI Chatbot,提升开发效率的必备指南!

从0到1彻底掌握Trae:手把手带你实战开发AI Chatbot,提升开发效率的必备指南!

我正在参加Trae「超级体验官」创意实践征文,本文所使用的 Trae 免费下载链接:www.trae.ai/?utm_source… 暴富技巧 比特鹰作为国内领先的 AI+Web3 领域企业,团队充满年轻活力 ——95% 成员为 00 后,不仅技术氛围浓厚,还会为每位成员量身定制成长规划;在职业发展层面,公司前景广阔,提供餐饮补贴、租房补贴、年底奖金、股票期权及额外假期等多重福利,助力员工在 35 岁前实现财富自由 目前公司正招聘海外运营、前端、后端、智能合约、AI 开发、HR 等岗位,有意向者可加微信联系: ai_lianqq 前言 大家好,我是小Q,字节跳动近期推出了一款 AI IDE—— Trae,

By Ne0inhk
用飞算 JavaAI 开发高校设备管理系统!从需求到上线,毕业设计 3 天搞定

用飞算 JavaAI 开发高校设备管理系统!从需求到上线,毕业设计 3 天搞定

前言 在高校教学与科研活动中,大型实验设备是重要的资源支撑,但传统人工管理模式常面临设备信息不透明、预约流程繁琐、使用记录难追溯等问题。为解决这一痛点,我以“高校大型实验设备管理与预约信息系统”作为毕业设计主题,借助飞算JavaAI工具完成系统开发。本文将详细记录从需求分析到代码生成、优化调试的全过程,分享飞算JavaAI在实际开发中的应用体验。 一、需求分析与规划 1. 功能需求 高校大型实验设备管理与预约信息系统需满足三类用户(管理员、教师、学生)的核心需求,具体拆解如下: * 管理员端:设备信息管理(新增、编辑、删除设备型号、规格、存放位置、故障状态等)、用户管理(新增教师/学生账号、分配权限)、预约审核(审核教师/学生的设备预约申请)、使用统计(按设备类型、时间段统计使用频次、预约成功率); * 教师端:设备查询(按设备名称、类型、可用状态筛选)、预约申请(选择设备、

By Ne0inhk