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 ...
随机推荐
- LuoguP4219 [BJOI2014]大融合(LCT)
早上考试想用\(LCT\)维护联通块\(size\),现在才发现\(LCT\)的\(size\)有虚实之分 \(Link\)与\(Acess\)中虚实变,干他丫的 \(Splay\)中只是相对关系,没 ...
- Docker 12 数据卷
参考源 https://www.bilibili.com/video/BV1og4y1q7M4?spm_id_from=333.999.0.0 https://www.bilibili.com/vid ...
- 长篇图解java反射机制及其应用场景
一.什么是java反射? 在java的面向对象编程过程中,通常我们需要先知道一个Class类,然后new 类名()方式来获取该类的对象.也就是说我们需要在写代码的时候(编译期或者编译期之前)就知道我们 ...
- mongo数据库-mongo角色权限
Built-In Roles(内置角色): 1. 数据库用户角色:read.readWrite; 2. 数据库管理角色:dbAdmin.dbOwner.userAdmin: 3. 集群管理角色:clu ...
- SpringBoot项目搭建 + Jwt登录
临时接了一个小项目,有需要搭一个小项目,简单记录一下项目搭建过程以及整合登录功能. 1.首先拿到的是一个码云地址,里面是一个空的文件夹,只有一个 2. 拿到HTTPS码云项目地址链接,在IDEA中cl ...
- ettercap之dns欺骗攻击
前言:攻击机(kali)和受害机(win7)需在同一网段下 1.首先创建一个钓鱼克隆网站,这里我就利用CS来弄了 2.对Ettercap的dns文件进行编辑 3.开启ettercap 4.去受害机看看 ...
- 美丽的神话 flac 成龙/金喜善 美丽的神话 mp3 韩红/孙楠
这里分享从网上收集的俩个版本的歌,都很不错,有兴趣的可以听听 以下是成龙/金喜善 flac 版本,音质不错: 美丽的神话成龙/金喜善解开我最神秘的等待星星坠落风在吹动终于再将你融入怀中两颗心颤抖相信我 ...
- 【Java】学习路径47-线程锁synchronized
线程安全问题: 简单来说,就是多个线程在操作同一个变量时引起的问题. 这里是用一个简单的例子说明一下: 以Runnable创建的线程为例:一个售票系统,count代表当前票数,卖出一张count--. ...
- Databend 源码阅读系列(二):Query server 启动,Session 管理及请求处理
query 启动入口 Databend-query server 的启动入口在 databend/src/binaries/query/main.rs 下,在初始化配置之后,它会创建一个 Global ...
- SpringMVC 04: SpringMVC中4种页面跳转方式
转发和重定向的页面跳转方式 页面跳转方式,本质上只有2种方式:转发 + 重定向 但在SpringMVC的具体实现上,转发可以细分为:普通的页面转发 + 经由action方法的页面转发 重定向可以细分为 ...