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

【说明书#2】一文搞懂ARM、AMD、Intel架构到底是什么意思

【说明书#2】一文搞懂ARM、AMD、Intel架构到底是什么意思

1. ARM架构 ARM(Advanced RISC Machines)架构最初由 ARM Holdings 设计,是一种 精简指令集计算(RISC) 架构。它广泛应用于 嵌入式设备、智能手机、平板、智能家居设备 等低功耗设备中。 ARM架构的特点: • RISC架构:ARM是**精简指令集计算(RISC)**架构的一种,意味着它的指令集比较简单,每条指令通常只执行一个操作。这让ARM处理器具有更高的效率和更低的功耗。 • 低功耗:ARM架构的处理器非常适合 移动设备,如 智能手机、平板电脑、智能手表 等。它们具有极低的功耗,能够提供更长的电池续航。 • 性能与扩展性:虽然ARM架构的性能相对于x86架构较低,但近些年,随着 Apple M1 和 Qualcomm Snapdragon 等高性能ARM处理器的推出,ARM也开始进入

By Ne0inhk
数据库从零开始:MySQL 中的 DDL 库操作详解【Linux版】

数据库从零开始:MySQL 中的 DDL 库操作详解【Linux版】

前言         在上一篇文章中,我们深入探讨了 MySQL 的基础知识,为大家奠定了坚实的理论基础。今天,我们将目光聚焦于 MySQL 最基础且至关重要的操作之一——数据库库级别的数据定义语言(DDL)操作,这是每一个数据库开发者和管理者必须精通的技能。         库级 DDL 操作是构建和管理数据库系统的基础,它涉及数据库对象的创建、修改和删除。通过本文,我们将详细讲解如何有效地进行数据库的管理,包括: 1. 创建数据库的基本语法和注意事项 2. 选择和切换数据库的正确方法 3. 修改数据库字符集和校对规则 4. 安全有效地删除数据库         接下来,让我们一步步揭开 MySQL 库操作的神秘面纱,帮助读者全面掌握这些核心技能。 1.创建数据库         我们先从数据库的创建开始讲起,相信看过我上篇文章的读者朋友见识过我常见数据库,上篇仅仅是为了让各位快速了解数据库,今天才是正事对它的讲解,下面我先带领各位看看它的语法。 1.1.语法 CREATE DATABASE [IF NOT EXISTS]

By Ne0inhk
RabbitMQ

RabbitMQ

在消息队列(MQ)中,确保消息成功传递是一个关键问题。消息传递的过程通常包括以下几个阶段:publisher(生产者) -> exchange(交换机) -> queue(队列) -> consumer(消费者)。为了确保消息在每个阶段都能成功传递,我们需要采取一系列措施来保证消息的可靠性。 生产者的可靠性 重试机制 当生产者与交换机(或队列,如果没有交换机)之间的连接不稳定时,生产者发送的消息可能会在传输过程中丢失。在这种情况下,生产者需要等待一段时间以获取响应。如果未收到响应,生产者应尝试重新发送消息。重试次数应有限制,以防止因持续重试而占用过多资源。此外,重试之间应有一定的间隔时间,以避免频繁重试导致资源浪费。 由于发送消息时会占用通道,其他业务操作可能会被阻塞,直到消息发送完成(无论成功或失败)。因此,对发送消息的重试机制进行限制是必要的,以防止因连接问题导致资源被长时间占用。 以下是一个在Spring Boot中配置生产者重试机制的示例: spring: rabbitmq: connection-timeout: 1s

By Ne0inhk

使用 VS Code 连接 MySQL 数据库

文章目录 * 前言 * VS Code下载安装 * 如何在VS Code上连接MySQL数据库 * 1、打开扩展 * 2、安装MySQL插件 * 3、连接 * 导入和导出表结构和数据 前言 提示:这里可以添加本文要记录的大概内容: 听说VS Code不要钱,功能还和 Navicat 差不多,还能在上面打游戏 但是没安装插件是不行的 发现一个非常牛的博主 还有一个非常牛的大佬 提示:以下是本篇文章正文内容,下面案例可供参考 VS Code下载安装 VS Code下载安装 如何在VS Code上连接MySQL数据库 本篇分享是在已有VS Code这个软件的基础上,数据库举的例子是MySQL 1、打开扩展 2、安装MySQL插件 在搜索框搜索 MySQL和 MySQL Syntax,下载这三个插件 点击下面的插件,选择【install】安装

By Ne0inhk