在学习 pytest 接口自动化的过程中YAML 是必不可少的核心技能。它是目前最主流的配置文件格式专门用来存放测试数据、接口地址、用例参数等信息比 JSON 更简洁、比 Excel 更轻量非常适合搭配 pytest 做数据驱动测试。一、什么是 YAMLYAML 是一种人类可读的数据序列化语言专门用来存储配置信息不是编程语言。全称YAML Ain’t Markup LanguageYAML 不是一种标记语言作用存储配置、测试数据、接口参数、用例数据后缀.yaml或.yml日常都用.yml更简洁优势语法极简、无 JSON 的引号 / 大括号、无 XML 的标签可读性极高二、YAML 核心特点文本格式、人能直接看懂不是编程语言只用来存数据 / 配置缩进严格和 Python 一样靠缩进表示层级去掉了 JSON/XML 的多余格式比如引号、大括号非常干净三、YAML 三大注意事项高频易错点区分大小写Name和name是两个不同的 key不能用 Tab 缩进只能用空格编辑器自动替换除外严格缩进层级不对直接报错这是最容易踩的坑四、YAML 常用数据类型写法对照 JSONYAML格式JSON格式整数、浮点数、布尔值、字符串int_key: 123float_key: 123.456bool_key: truestring_key: This is a string{int_key: 123,float_key: 123.456,bool_key: true,string_key: This is a string}列表list_key:- item1- item2- item3{list_key: [item1,item2,item3]}字典map_key:sub_key1: sub_value1sub_key2: sub_value2{map_key: {sub_key1: sub_value1,sub_key2: sub_value2}}嵌套结构nested_key:list_key:- item1- item2map_key:sub_key1: sub_value1sub_key2: sub_value2{nested_key: {list_key: [item1,item2],map_key: {sub_key1: sub_value1,sub_key2: sub_value2}}}在线转换工具https://www.jashtool.com/json/to-yaml这个工具能够帮助我们进行json格式和yaml格式之间的互转。五、Python 操作 YAML安装 读写实战1. 安装 PyYAML 库pip install PyYAML6.0.12、写测试代码提前创建一个名为firstYaml.yml的yaml文件import json import yaml #往yaml文件中写入数据 def write_yaml(filename, data): #打开文件 with open(file filename, mode a, encoding utf-8) as f: #往yaml中写数据 yaml.safe_dump(data data, stream f) #从yaml文件中读取数据 def read_yaml(filename): with open(file filename, mode r, encodingutf-8) as f: #读取yaml文件数据 data yaml.safe_load(f) return data #清空yaml文件内容 def clear_yaml(filename): with open(file filename, mode w, encodingutf-8) as f: f.truncate() # #测试往yaml文件中写入数据 # def test_write(): # data { # name : zhangsan, # age : 22 # } # write_yaml(firstYaml.yml,data) #测试从yaml文件中读取数据 def test_read(): data read_yaml(firstYaml.yml) print(原始数据, data) print(JSON格式, json.dumps(data))#字典格式转json格式 # #测试清空yaml文件内容 # def test_clear(): # clear_yaml(firstYaml.yml)pytest运行后的测试结果代码里的这行是 Python文件操作的标准写法with open(filefilename, modea, encodingutf-8) as f:withPython 关键字自动帮你打开文件、关闭文件不用手动写close()open()打开文件的函数filefilename要打开的文件路径 / 名字mode打开模式最重要决定是能读还是能写encodingutf-8编码格式指定为utf-8中文不会出现乱码as f把打开的文件赋值给变量f后续用f操作文件最常用的 4 种 moder只读只能读不能写w清空写入打开文件 → 清空所有内容 → 再写入a追加写入打开文件 → 在末尾添加内容 → 不清空六、YAML 在 pytest 中的作用重点存放接口地址base_url、headers存放测试用例数据参数化数据存放配置信息环境切换、数据库配置做数据驱动测试结合pytest.mark.parametrize七、总结YAML 是配置文件语法简洁、靠缩进、不能用 Tab支持数字、字符串、布尔、列表、字典、嵌套Python 用PyYAML操作核心方法yaml.safe_load()读yaml.safe_dump()写with open是文件操作神器自动开关文件常用模式r读、w清空写、a追加