python pyyaml操作yaml配置文件
在测试工作中,可以使用yaml编写测试用例,执行测试用例时直接获取yaml中的用例数据进行测试(如:接口自动化测试)
1.什么是yaml
是一种可读的数据序列化语言,通常用于配置文件
非常简洁和强大,远比json格式更方便
可用作自动化测试框架的配置文件和测试用例文件
原则
a.大小写敏感
b.使用缩进表示层级关系
c.缩进长度没有限制,只要元素对齐就表示这些元素属于一个层级。
d.使用#表示注释
e.字符串可以不用引号标注
2.yaml配置文件的格式
使用:号隔开表示键值对
使用-号表示数组
例如:
ip: 127.0.0.1
port: 2002
port_in: 8764
charset: utf-8
post_type:
- 1
- 2
- 3
- 4 读取后的结果:
{'ip': '127.0.0.1', 'port': 2002, 'port_in': 8764, 'charset': 'utf-8', 'post_type': [1, 2, 3, 4]}
&和*用于引用
ip: &ip 127.0.0.1
url: *ip #运行结果
{'ip': '127.0.0.1', 'url': '127.0.0.1'}
3.使用python操作yaml配置文件
(注:PyYAML5.1之后,通过禁止默认加载程序(FullLoader)执行任意功能,该load函数也变得更加安全)
pyyaml:python的第三方库,用于操作yaml配置文件
安装pyyaml:pip install PyYaml
字符串转换成字典:yaml.load()
import yaml def get_configres(filepath):
'''
获取yaml配置文件中的内容
:param filepath:
:return: 返回的是一个字典
'''
f1=open(filepath,"r")
res=yaml.load(f1,Loader=yaml.FullLoader)
return res res=get_configres("../config/cfg.yaml")
print(res,type(res)) #运行结果:
{'ip': '127.0.0.1', 'port': 2002, 'port_in': 8764, 'charset': 'utf-8', 'post_type': [1, 2, 3, 4]} <class 'dict'>
字典转换成字符串:yaml.dump()
params={'ip': '127.0.0.1', 'port': 2002, 'port_in': 8764, 'charset': 'utf-8', 'post_type': [1, 2, 3, 4]}
res_str=yaml.dump(params)
print(res_str,type(res_str))
#运行结果:
charset: utf-8
ip: 127.0.0.1
port: 2002
port_in: 8764
post_type:
- 1
- 2
- 3
- 4
<class 'str'>
使用yaml写测试用例
--- #登录模块
- #test1
url: /api/login
method: post
detail: 正常登录
data:
username: admin
password: ipharmacare
check:
retcode: 0 - #test2
url: /api/login
method: post
detail: 不传账号,传密码
data:
username: test2
password: ipharmacare2
check:
retcode: 0 #运行结果:
[{'url': '/api/login', 'method': 'post', 'detail': '正常登录', 'data': {'username': 'admin', 'password': 'ipharmacare'}, 'check': {'retcode': 0}}, {'url': '/api/login', 'method': 'post', 'detail': '不传账号,传密码', 'data': {'username': 'test2', 'password': 'ipharmacare2'}, 'check': {'retcode': 0}}]
在一个文件中保存多个Yaml文档内容:用---隔开,使用yaml.load_all()方法
test.yml
--- #登录模块
- #test1
url: /api/login
method: post
detail: 正常登录
data:
username: admin
password: ipharmacare
check:
retcode: 0 --- #登录模块2
- #test1
url: /api/login
method: post
detail: 不传账号,传密码
data:
username: test2
password: ipharmacare2
check:
retcode: 0
读取使用yaml.load_all()方法
import yaml def get_configres(filepath):
'''
获取yaml配置文件中的内容
:param filepath:
:return: 返回的是一个字典
'''
f1=open(filepath,"r",encoding='utf-8')
res=yaml.load_all(f1,Loader=yaml.FullLoader)
return res res=get_configres("../config/test.yml")
print(res,type(res))
for i in res:
print(i) #读取后的结果:
<generator object load_all at 0x0322C570> <class 'generator'>
[{'url': '/api/login', 'method': 'post', 'detail': '正常登录', 'data': {'username': 'admin', 'password': 'ipharmacare'}, 'check': {'retcode': 0}}]
[{'url': '/api/login', 'method': 'post', 'detail': '不传账号,传密码', 'data': {'username': 'test2', 'password': 'ipharmacare2'}, 'check': {'retcode': 0}}]
python pyyaml操作yaml配置文件的更多相关文章
- Python中操作ini配置文件
这篇博客我主要想总结一下python中的ini文件的使用,最近在写python操作mysql数据库,那么作为测试人员测试的环境包括(测试环境,UAT环境,生产环境)每次需要连接数据库的ip,端口,都会 ...
- python基础-PyYaml操作yaml文件
yaml语法 格式 它的基本语法规则如下 大小写敏感 使用缩进表示层级关系 缩进时不允许使用Tab键,只允许使用空格. 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可 YAML 支持的数据结构有 ...
- Python - 通过PyYaml库操作YAML文件
PyYaml简单介绍 Python的PyYAML模块是Python的YAML解析器和生成器 它有个版本分水岭,就是5.1 读取YAML5.1之前的读取方法 def read_yaml(self, pa ...
- python读取yaml配置文件
支持多种语言:python.js.golang.java.c.c++ YAML 语言(发音 /ˈjæməl/ )的设计目标,就是方便人类读写.它实质上是一种通用的数据串行化格式. 它的基本语法规则如下 ...
- 6.YAML文件详解、PyYaml操作
YAML简介: yaml是一种数据格式,支持注释,换行,多行字符串,裸字符串(正序,字符串) YAML作用: 用于全局的配置文件 用于测试用例编写 YAML语法规则: 区分大小写 使用缩进 ...
- python的logging模块之读取yaml配置文件。
python的logging模块是用来记录应用程序的日志的.关于logging模块的介绍,我这里不赘述,请参见其他资料.这里主要讲讲如何来读取yaml配置文件进行定制化的日志输出. python要读取 ...
- Appium + python -yaml配置文件
在线安装:pip install yaml import yamlimport os # 获取当前脚本所在文件夹路径curpath = os.path.dirname(os.path.realpath ...
- python之数据驱动yaml操作
Mail163.yaml配置文件如下: login_data: url : 'https://mail.163.com/'case1: user : '' passwd : '' errorText ...
- Python3操作YAML文件
数据及配置文件之争 数据及文件通常有三种类型: 配置文件型:如ini,conf,properties文件,适合存储简单变量和配置项,最多支持两层,不适合存储多层嵌套数据 表格矩阵型:如csv,exce ...
随机推荐
- Windows PE 第十章 加载配置信息
加载配置信息 加载配置信息最初最用在Windows NT操作系统中,作为文件头部的延伸部分,后来被用作异常处理.加载配置信息表中存放了基于结构化异常处理(SEH)技术的各项异常句柄.当程序运行发生异常 ...
- Windows核心编程 第四章 进程(中)
4.2 CreateProcess函数 可以用C r e a t e P r o c e s s函数创建一个进程: BOOL CreateProcessW( _In_opt_ LPCWSTR lpAp ...
- Ubuntu Linux 学习篇 配置DNS服务器
BIND9 DNS(Domain Name Server,域名服务器)是进行域名(domain name)和与之相对应的IP地址 (IP address)转换的服务器.DNS中保存了一张域名(doma ...
- FreeSql之Expression表达式拼接参数扩展
在FreeSql源码中Expression表达式拼接默认最多支持到5个泛型参数,当我们使用表关联比较多的时候,就需要进行扩展. 新建一个类,将命名空间改为System.Linq.Expressions ...
- PHP基础-PHP中的函数声明
/* PHP的变量的范围* 局部变量: 在函数中声明的变量就是局部变量,只能在自己的函数内部使用.* 全局变量: 在函数外声明,在变量声明以后的,直到整个脚本结束前都可以使用,包括在函数中和{}中都可 ...
- VMware-viclient-all
VMware-viclient-all https://my.vmware.com/web/vmware/details?productId=491&downloadGroup=ESXI60U ...
- svg web拓扑更新了,支持动态添加svg组件
版本1.0请点此 预览地址 https://svg.yaolunmao.top 如何使用 # 克隆项目 git clone https://github.com/yaolunmao/vue-webto ...
- [DB] SQL 必知必会
整体架构 数据类型 文本类:CHAR.VARCHAR(可变长度字符,多使用).TEXT.LONGTEXT(文本较大时使用) 数字类:TINYINT.INT.BIGINT.FLOAT.DOUBLE 日期 ...
- netperf对比
netperf -H 10.1.60.141 -t TCP_STREAM -l 60 -p 10082 netperf -H 10.1.60.141 -t UDP_STREAM -l 60 -p ...
- Deepin/Uos系统更新源失败。提示:E: 仓库 “http://packages.chinauos.cn/uos eagle
Deepin/Uos系统更新源失败.提示:E: 仓库 "http://packages.chinauos.cn/uos eagle InRelease" 没有数字签名 起因是在Uo ...