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

破解Python黑盒:让编译代码无所遁形的逆向工具

破解Python黑盒:让编译代码无所遁形的逆向工具 【免费下载链接】pycdcC++ python bytecode disassembler and decompiler 项目地址: https://gitcode.com/GitHub_Trending/py/pycdc 当你面对只留下.pyc文件而丢失源代码的Python项目时,是否感到无从下手?pycdc这款强大的C++逆向工具,能够将Python字节码还原为可读源代码,支持从Python 1.0到3.13的全版本解析,是开发者、安全研究员和学习者处理编译代码的必备工具。 解决实际问题:pycdc的核心价值 在软件开发过程中,经常会遇到源代码丢失、第三方库行为不透明、代码安全审计等问题。pycdc通过将编译后的字节码反编译为可读代码,帮助用户恢复丢失的项目文件、分析库的内部实现逻辑、检查潜在安全漏洞。无论是意外丢失源代码需要恢复,还是需要深入理解第三方库的工作原理,pycdc都能提供关键支持,避免重新开发的成本,加速问题解决过程。 技术原理:字节码与源代码的映射之旅 pycdc的工作原理可以类比为语言翻译过程。首

By Ne0inhk
零门槛!PythonAnywhere 免费部署全指南:不止 Django,这些项目都能搭(附主流平台对比)

零门槛!PythonAnywhere 免费部署全指南:不止 Django,这些项目都能搭(附主流平台对比)

前言 作为刚入门的开发者,你是不是也遇到过这些痛点?想把本地写好的 Python 项目上线,却被服务器配置、Linux 命令搞得头大;试了几个平台,要么免费版限制多到没法用,要么步骤复杂到半途放弃…… 今天给大家推荐一个 新手友好、完全免费、无需懂服务器 的神器 ——PythonAnywhere。它不仅能轻松部署 Django,还支持 Flask、静态网站等多种项目,全程鼠标点一点 + 少量命令就能搞定。本文会模糊所有个人敏感信息,带你从 0 到 1 掌握部署,还会对比市面上主流免费平台,帮你选对最适合的工具。 一、先搞懂:PythonAnywhere 到底能部署啥?(免费版够用) 很多人以为 PythonAnywhere 只能部署 Django,其实它的免费版能力远超想象!只要是轻量级 Python 相关项目,基本都能搭,关键是 不用自己折腾服务器、不用花钱。

By Ne0inhk
AiOnly大模型服务实测:从零开始Python调用ChatGPT/Claude API,打造专属AI智能体

AiOnly大模型服务实测:从零开始Python调用ChatGPT/Claude API,打造专属AI智能体

AiOnly大模型服务实测:从零开始Python调用ChatGPT/Claude API,打造专属AI智能体 本文围绕 AiOnly 一站式 Mass 模型服务平台展开,先介绍其基础概念与服务,平台聚焦降低模型应用门槛,整合全球前沿模型,提供企业级 API 服务,降低成本且支持高并发,可调用多种顶尖大模型。接着详细说明平台注册、免费额度领取及 API 密钥获取步骤,还介绍热门模型功能。随后重点讲解 Python 调用 API 的实战,包括环境准备、基础与进阶调用,以及专属 Python 学习智能体的封装与功能扩展,提及对话和图片理解、入参参数。最后列出常见问题与解决方案,并总结平台优势及进一步开发方向,让你更方便上手。 一、关于AiOnly 1.1 AiOnly的基础概念 AiOnly是一站式Mass模型服务平台,聚焦降低模型应用门槛,加速场景智能化进程,以一键调用、敏捷开发为核心,整合全球前沿模型,通过标准化API接口与模块化组件,

By Ne0inhk

Python 数据分析实战:4 个经典项目案例

前言 数据分析是大数据技术的重要应用领域。本文将基于4个典型实战案例,系统讲解Python在数据挖掘四大核心任务中的应用:关联规则分析、分类预测、回归建模和聚类分析。案例涵盖电影类型关联挖掘、心脏病诊断预测、大学录取率分析和NBA球员聚类等实际场景,完整呈现pandas数据处理、scikit-learn模型构建以及matplotlib可视化等关键技术要点。特别适合数据分析初学者作为实践参考。 项目一:电影类型关联规则挖掘(Apriori算法) 项目目标: 通过挖掘电影类型间的潜在关联关系,发现强关联规则,为电影推荐和类型组合决策提供数据支持。 实施步骤: * 读取电影数据文件 * 过滤无类型标签的记录 * 将类型字符串转换为列表格式 代码实现: import pandas as pd from collections import defaultdict # 数据加载与清洗 df = pd.read_csv('movies.csv') df = df[df['genres']!='(no

By Ne0inhk