Python YAML模塊使用指南(接口測(cè)試參數(shù)存儲(chǔ)與配置)
一、YAML介紹
YAML 是一種數(shù)據(jù)序列化語言,用于以人類可讀的形式存儲(chǔ)信息。其最初代表“Yet Another Markup Language”,后更改為“YAML Ain’t Markup Language”(YAML 不是一種標(biāo)記語言),以區(qū)別于傳統(tǒng)標(biāo)記語言。
1.1 核心特點(diǎn)
- 簡潔易讀:語法簡潔,減少 JSON、XML 中的引號(hào)、括號(hào)等“噪音”格式;
- 非編程語言:主要用于存儲(chǔ)配置信息,不具備編程邏輯;
- 縮進(jìn)敏感:縮進(jìn)規(guī)則類似 Python,通過縮進(jìn)來表示層級(jí)關(guān)系;
- 區(qū)分大小寫:對(duì)鍵名、值的大小寫嚴(yán)格區(qū)分;
- 禁用 Tab 鍵:不允許使用制表符縮進(jìn),需通過空格實(shí)現(xiàn)縮進(jìn)(部分編輯器可配置 Tab 自動(dòng)轉(zhuǎn)為空格)。
1.2 支持的數(shù)據(jù)類型及語法對(duì)比(與JSON)
YAML 文件后綴名為 .yaml 或 .yml(常用 .yml),支持多種數(shù)據(jù)類型,其語法與 JSON 對(duì)比如下:
| 數(shù)據(jù)類型 | YAML 語法 | JSON 語法 |
|---|---|---|
| 簡單標(biāo)量值 | key: value | {"key": "value"} |
| 整數(shù)和浮點(diǎn)數(shù) | 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"}} |
| 嵌套結(jié)構(gòu) | 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 語法輔助工具
若對(duì) YAML 語法不熟悉,可使用 JSON 轉(zhuǎn) YAML 工具快速生成,生成后需二次檢查格式正確性。
工具地址:https://www.jashtool.com/json/to-yaml
示例:

二、YAML 使用(Python 環(huán)境)
在 Python 中使用 YAML 需借助 PyYAML 庫,主要用于讀取、寫入、清空 YAML 配置文件,適用于接口自動(dòng)化測(cè)試中的參數(shù)存儲(chǔ)、配置管理等場(chǎng)景。
2.1 安裝 PyYAML 庫
安裝命令:
pip install PyYAML
安裝后可通過pip list查看是否安裝成功
2.2 核心操作(讀取、寫入、清空)
2.2.1 追加寫入 YAML 文件
向指定 YAML 文件追加數(shù)據(jù)(若文件不存在則自動(dòng)創(chuàng)建):
import yaml
import os
def write_yaml(filename, data):
# 拼接文件路徑(默認(rèn)在項(xiàng)目根目錄的 data 文件夾下)
file_path = os.getcwd() + "/data/" + filename
# 以追加模式打開文件,指定編碼為 utf-8
with open(file_path, encoding="utf-8", mode="a+") as f:
# 安全寫入數(shù)據(jù),支持 Unicode 字符
yaml.safe_dump(data, stream=f, allow_unicode=True)2.2.2 讀取 YAML 文件數(shù)據(jù)
根據(jù)指定鍵讀取 YAML 文件中的對(duì)應(yīng)值:
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 數(shù)據(jù)
data = yaml.safe_load(f)
# 返回指定鍵對(duì)應(yīng)的值
return data[key]
2.2.3 清空 YAML 文件
清空指定 YAML 文件中的所有內(nèi)容:
import os
def clear_yaml(filename):
file_path = os.getcwd() + "/data/" + filename
with open(file_path, encoding="utf-8", mode="w") as f:
# 清空文件內(nèi)容
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()
# 測(cè)試函數(shù)
def test_yml():
# 1. 寫入 YAML 文件(數(shù)據(jù)為字典類型)
data = {"str": "12345", "user": "zhangsan", "password": "123456"}
write_yaml('test.yml', data)
# 2. 讀取 YAML 文件中 "str" 鍵對(duì)應(yīng)的值
ret = read_yaml('test.yml', "str")
print("讀取結(jié)果:", ret) # 輸出:讀取結(jié)果: 12345
# 3. 清空 YAML 文件
clear_yaml('test.yml')
# 執(zhí)行測(cè)試
if __name__ == "__main__":
test_yml()
2.4 關(guān)鍵說明
yaml.safe_dump():安全寫入數(shù)據(jù),避免執(zhí)行惡意代碼,推薦優(yōu)先使用(而非yaml.dump());yaml.safe_load():安全加載數(shù)據(jù),同樣用于防范惡意代碼,避免使用yaml.load()(存在安全風(fēng)險(xiǎn));- 文件路徑:示例中默認(rèn)將 YAML 文件放在項(xiàng)目根目錄的
data文件夾下,需確保該文件夾已創(chuàng)建,否則會(huì)拋出文件不存在異常; - 編碼格式:指定
encoding="utf-8"避免中文等特殊字符出現(xiàn)亂碼。
到此這篇關(guān)于Python YAML模塊使用指南(接口測(cè)試參數(shù)存儲(chǔ)與配置)的文章就介紹到這了,更多相關(guān)Python YAML模塊使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python中不同進(jìn)制間的轉(zhuǎn)換實(shí)現(xiàn)
在計(jì)算機(jī)科學(xué)中,需要進(jìn)行不同進(jìn)制之間的轉(zhuǎn)換,本文主要介紹了Python中不同進(jìn)制間的轉(zhuǎn)換,具有一定的參考價(jià)值,感興趣的可以了解一下2023-10-10
利用Python實(shí)現(xiàn)讀取Word表格計(jì)算匯總并寫入Excel
這篇文章主要給大家介紹了關(guān)于如何利用Python實(shí)現(xiàn)讀取Word表格計(jì)算匯總并寫入Excel的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-01-01
python決策樹預(yù)測(cè)學(xué)生成績等級(jí)實(shí)現(xiàn)詳情
這篇文章主要為介紹了python決策樹預(yù)測(cè)學(xué)生成績等級(jí),使用決策樹完成學(xué)生成績等級(jí)預(yù)測(cè),可選取部分或全部特征,分析參數(shù)對(duì)結(jié)果的影響,并進(jìn)行調(diào)參優(yōu)化,決策樹可視化進(jìn)行調(diào)參優(yōu)化分析2022-04-04
Python使用enum模塊獲取枚舉成員索引號(hào)的四種方法詳解
在 Python 中,可以使用 enum 模塊創(chuàng)建枚舉類型,并通過遍歷枚舉成員來獲取其索引號(hào),本文介紹了常用的四種方法,大家可以根據(jù)自己的需要進(jìn)行選擇2026-04-04
解決Python中l(wèi)ist里的中文輸出到html模板里的問題
今天小編就為大家分享一篇解決Python中l(wèi)ist里的中文輸出到html模板里的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-12-12
Anaconda最新版2023安裝教程Spyder安裝教程圖文詳解
這篇文章主要介紹了Anaconda最新版2023安裝教程Spyder安裝教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-05-05
Tensorflow之梯度裁剪的實(shí)現(xiàn)示例
這篇文章主要介紹了Tensorflow之梯度裁剪的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03
關(guān)于python寫入文件自動(dòng)換行的問題
今天小編就為大家分享一篇關(guān)于python寫入文件自動(dòng)換行的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-06-06
使用Python實(shí)現(xiàn)windows下的抓包與解析
這篇文章主要介紹了使用Python實(shí)現(xiàn)windows下的抓包與解析,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2018-01-01
Python語言的面相對(duì)象編程方式初步學(xué)習(xí)
這篇文章主要介紹Python語言的面相對(duì)象編程方式的初步學(xué)習(xí),包括類和對(duì)象以及繼承特性等知識(shí),需要的朋友可以參考下2016-03-03

