6.YAML文件详解、PyYaml操作
- yaml是一种数据格式,支持注释,换行,多行字符串,裸字符串(正序,字符串)
- 用于全局的配置文件
- 用于测试用例编写
- 区分大小写
- 使用缩进表示层级,不能使用tab键进行缩进,只能用空格
- 缩进没有数量,只要前面对其就可以
- 注释是#
#键值对,key:(空格)value,必须加空格,如果换行,可以不加空格
#多行写法
yamltest:
key: value,
key2: value2
#一行写法
yamltest2: {key: 1, key2: 2}
#写法3
key: value
数组
#每个结构下面,对其的-,表示是同一个数组
#示例1
yamltest:
-key: value,
-key2: value2
#结果等同于{'yamltest':[{'key':value},{'key2':value2}]}
# 示例2
-
test1: #注意缩进
a: 2
b: 3
-
test2:
a: 2
b: 3
"""
结果等同于
[
{
"test1": {
"a": 2,
"b": 3
}
},
{
"test2": {
"a": 2,
"b": 3
}
}
]
"""
安装:pip3 install pyyaml
导入:import yaml
yaml.load(stream,Loader)
函数的作用是用来将YAML文档转化成Python对象
stream:文件流
Loader:加载方式
返回值:返回值为一个Python字典对象
yaml.load_all(stream,Loader)
如果string或文件包含几块yaml文档,你可以使用yaml.load_all来解析全部的文档
stream:文件流
Loader:加载方式
返回值:返回值为一个Python字典对象
yaml.dump(data, stream=None, Dumper=Dumper, **kwds)
将一个python对象生成为yaml文档
Loader加载方式
BaseLoader 仅加载最基本的YAML
SafeLoader 安全地加载YAML语言的子集。建议用于加载不受信任的输入(safe_load)
FullLoader 加载完整YAML语言。避免任意代码执行。这是默认加载器(full_load)
UnsafeLoader 也称为Loader向后兼容性,原始的Loader代码,不受信任的数据可能通过这种方式执行其他有危害的代码
# -*- coding: utf-8 -*-
# @Time: 2022/5/4 13:51
# @Author: LiQi
# @Describe:
import yaml
class YamlUtil:
def __init__(self, yaml_file):
'''
:param yaml_file: yaml文件,通过初始化把文件传入到操作yaml的类
'''
self.yaml_file = yaml_file
# 读取yaml文件
def read_yaml(self):
'''
读取yaml,对yaml进行反序列
'''
# 打开yaml文件得到文件f
with open(self.yaml_file, encoding='utf-8') as f:
# yaml.FullLoader加载方式
value = yaml.load(f, Loader=yaml.FullLoader)
return value
#yaml用例
-
name: 接口名称
request:
url: https://xxxxxxx.com #请求地址
method: get #请求方式
headers: #请求头
Content-Type: applicstion/json params: #请求参数
k1: v1
k2: v2 validate:#断言
- eq: {code: 0}
- eq: {statys: 200}
# 接口请求
import pytest
import requests
from .yaml_util import YamlUtil class TestApi:
# YamlUtil是之前封装好的读取yaml的类
@pytest.mark.parametrize('args', YamlUtil('./test.yaml').read_yaml())
def test_01_api(self, args):
url = args['request']['url']
params = args['request']['params']
res = requests.get(url, params)
assert args['eq'] in res.txt
6.YAML文件详解、PyYaml操作的更多相关文章
- [Kubernetes]yaml文件详解
应前一段时间夸下的海口:[Kubernetes]如何使用yaml文件使得可以向外暴露服务,说过要写一篇关于yaml文件详解的文章出来的,今天来总结一下.yaml文件用在很多地方,但是这里以介绍在Kub ...
- k8s之yaml文件详解
k8s之yaml文件详解 目录 k8s之yaml文件详解 1. k8s支持的文件格式 2. YAML语言格式 3. 查看api资源版本标签 4. 编写nginx-test.yaml资源配置清单 4.1 ...
- dart系列之:元世界pubspec.yaml文件详解
目录 简介 pubspec.yaml支持的字段 一个例子 字段详情 总结 简介 pubspec.yaml是所有dart项目的灵魂,它包含了所有dart项目的依赖信息和其他元信息,所以pubspec.y ...
- K8s创建pod yaml文件详解
kubernetes创建pod的yaml文件,参数说明 apiVersion: v1 #指定api版本,此值必须在kubectl apiversion中 kind: Pod #指定创建资源的角色/类型 ...
- k8s yaml文件详解
1.yaml格式的Pod配置文件内容及注解 深入Pod之前,首先我们来了解下Pod的yaml整体文件内容及功能注解. 如下: # yaml格式的pod定义文件完整内容: apiVersion: v1 ...
- Kubernetes (yaml 文件详解)
# yaml格式的pod定义文件完整内容:apiVersion: v1 #必选,版本号,例如v1kind: Pod #必选,Podmetadata: #必选,元数据 ...
- Linux中/proc目录下文件详解
转载于:http://blog.chinaunix.net/uid-10449864-id-2956854.html Linux中/proc目录下文件详解(一)/proc文件系统下的多种文件提供的系统 ...
- SUBLIME TEXT 2 设置文件详解
SUBLIME TEXT 2 设置文件详解 Preferences.sublime-settings文件: // While you can edit this file, it’s best to ...
- [转]AndroidManifest.xml文件详解
转自:http://www.cnblogs.com/greatverve/archive/2012/05/08/AndroidManifest-xml.html AndroidManifest.xml ...
随机推荐
- Min GW 安装教程(转载)
下载方式一:1.百度搜索关键词"mingw",点击第一个:2.进入官网后,点击右上角的"Downloads":3.进入第三个页面后,点击"mingw- ...
- 【安全通报】DolphinScheduler 漏洞情况说明
Apache DolphinScheduler 社区邮件列表最近通告了 2 个漏洞,考虑到有很多用户并未订阅此邮件列表,我们特地在此进行情况说明: CVE-2020-11974[1] 漏洞 (CVE- ...
- TypeScript 项目报错 Unknown file extension ".ts"
下图是该问题的详细报错截图,经过多次捣鼓,初步猜测是模块有问题,要用 ES Module 还真是曲折,最不容易出错的就是 CommonJS 模块: 在百度.Bing 上搜索了好久的帖子也都没有相关的解 ...
- Word 脚注和尾注是什么?怎么设置?
描述 脚注一般位于页面的底部,作为文档某处内容的注释.尾注一般位于文档的末尾,列出引文的出处等. 设置脚注和尾注 将光标移动到要插入脚注或尾注的地方,然后点击"引用"选项卡. 左边 ...
- 简单html js css 轮播图片,不用jquery
这个是自己修改的轮播图片,在网上有的是flash 实现的轮播图片,对搜索引擎不友好, 比如:dedecms 的首页的轮播图是用flash实现滚动的. 所以这个自己修改了一下,实现html+js+css ...
- 座位安排(欧拉回路,高斯消元,bitset)
题面 由于旋转大师 F r e n c h \rm French French 的离去, A r e x t r e \rm Arextre Arextre 光荣地承担了给全班换座位的重任. 由于这是 ...
- 编译boost库的dll和lib
下载Boost 下载链接:Boost Downloads 下载完成后,将其解压放置到需要编译保存的目录下,比如我自己的目录: F:\Work\Boost 打开VS编译 如果是使用的VS2017,则打开 ...
- 记pyautogui使用方法
记录学习过程,本人喜欢简洁不啰嗦: 控制鼠标 1 pyautogui.moveTo(w - 100, h - 100, duration=0.25) # 立即移动到指定x, y位置坐标, durati ...
- Linux 破解mysql密码(详细步骤)
当mysql密码忘记时 [root@master ~]# mysql -uroot -p1 mysql: [Warning] Using a password on the command line ...
- 使用man手册查看内核函数
1.为避免man的一些功能缺失,先装好manpages-dev sudo apt-get install manpages-dev 2.安装mandocs的依赖包xmlto sudo apt-get ...