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

Flutter 三方库 statistics 鸿蒙高性能数据回归科学系统全域适配:将顶尖数理统计算法与重负载大模型双栈引擎植入微距节点彻底盘活泛计算终端底层数据-适配鸿蒙 HarmonyOS ohos

Flutter 三方库 statistics 鸿蒙高性能数据回归科学系统全域适配:将顶尖数理统计算法与重负载大模型双栈引擎植入微距节点彻底盘活泛计算终端底层数据-适配鸿蒙 HarmonyOS ohos

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 statistics 鸿蒙高性能数据回归科学系统全域适配:将顶尖数理统计算法与重负载大模型双栈引擎植入微距节点彻底盘活泛计算终端底层数据感知系统 前言 在鸿蒙生态的智慧医疗、金融理财及运动健康类应用中,实时对传感器数据或业务流水进行深度统计分析是核心能力。例如,通过运动步频计算方差以识别走跑状态,或根据心率波动进行回归分析以预测压力指数。statistics 库作为 Dart 生态中轻量且纯粹的数学工具集,为这类需求提供了高性能的底层支持。本文将探讨如何在 OpenHarmony 上适配该库,实现设备侧的大数据即时运算。 一、原理解析 / 概念介绍 1.1 基础原理/概念介绍 statistics 库不依赖外部厚重的二进制 C++ 库,它通过 Dart 语言级优化实现了对 Iterable<num> 的原生扩展。其核心逻辑聚焦于描述性统计(Descriptive Statistics)与回归模型(Regression

By Ne0inhk
Flutter 组件 easter 适配鸿蒙 HarmonyOS 实战:天文学节气算法,构建全球化复活节周期与民俗历法治理架构

Flutter 组件 easter 适配鸿蒙 HarmonyOS 实战:天文学节气算法,构建全球化复活节周期与民俗历法治理架构

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 组件 easter 适配鸿蒙 HarmonyOS 实战:天文学节气算法,构建全球化复活节周期与民俗历法治理架构 前言 在鸿蒙(OpenHarmony)生态迈向全球化部署、涉及跨区域文化适配(I18n)及复杂变动日期计算的背景下,如何精确推演具备“阴阳历混合特性”的全球性节日(如复活节),已成为决定跨国类应用“运营确定性”的核心技术难点。在鸿蒙设备这类强调 AOT 极致性能与低功耗常驻服务(AOD)的环境下,如果应用依然依赖手动配置的“节日死表”,由于由于复活节日期在全球范围内的复杂游移性,极易由于由于配置滞后导致海外营销活动的时序错乱。 我们需要一种能够实现高精度天文学推演、支持百年尺度计算且具备纯 Dart 离线运作能力的历法预判方案。 easter 为 Flutter 开发者引入了基于高斯算法(Gauss's algorithm)或曼氏算法(Meeus&

By Ne0inhk
Flutter 三方库 crypto 的鸿蒙化适配指南 - 实现具备工业级哈希算法与消息摘要计算的安全底座、支持端侧数据校验与数字签名实战

Flutter 三方库 crypto 的鸿蒙化适配指南 - 实现具备工业级哈希算法与消息摘要计算的安全底座、支持端侧数据校验与数字签名实战

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 crypto 的鸿蒙化适配指南 - 实现具备工业级哈希算法与消息摘要计算的安全底座、支持端侧数据校验与数字签名实战 前言 在进行 Flutter for OpenHarmony 开发时,确保数据的一致性与安全性是业务上线的先决条件。无论是对用户密码进行加盐哈希存储、验证下载文件的完整性,还是为分布式信令生成 API 签名,都离不开严谨的加密算法支持。crypto 是 Dart 官方生态中用于处理哈希与摘要的核心工具库。本文将探讨如何在鸿蒙端构建极致、稳健的加密算法基石。 一、原直观解析 / 概念介绍 1.1 基础原理 该库提供了一系列纯 Dart 实现的一致性哈希算法(Hash Algorithims)。它通过将任意长度的输入映射为固定长度的二进制摘要(Digest)。支持流式处理(Chunked processing),即允许在读取大文件时分批次泵送数据。在鸿蒙端。它是“

By Ne0inhk
【Java/Go/Python】三大主流语言深度对比:语法、特性、应用全解析

【Java/Go/Python】三大主流语言深度对比:语法、特性、应用全解析

文章目录 * 目录 * 前言 * 一、三大语言核心信息总览 * 二、基础语法对比(附代码示例) * 1. Hello World(入门第一行代码) * 2. 变量定义 * 3. 条件判断语句 * 4. 循环语句 * 5. 函数定义 * 三、核心特点深度剖析 * 1. Java 核心特点 * 优势 * 劣势 * 2. Go 核心特点 * 优势 * 劣势 * 3. Python 核心特点 * 优势 * 劣势 * 四、主流应用场景落地 * 典型案例 * 五、核心功能代码实战对比 * 1. 文件读写(读取文本文件内容并写入新文件) * 2. HTTP GET请求(获取公共API数据) * 3.

By Ne0inhk