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 ...
随机推荐
- 一文理解Hadoop分布式存储和计算框架入门基础
@ 目录 概述 定义 发展历史 发行版本 优势 生态项目 架构 组成模块 HDFS架构 YARN架构 部署 部署规划 前置条件 部署步骤 下载文件(三台都执行) 创建目录(三台都执行) 配置环境变量( ...
- 杀死 Windows 某个端口
进入终端命令行,输入netstat -aon|findstr 3000查找端口号所对应的 PID: 输入指令taskkill /pid 20348 /f:
- 造数字(数位DP)
题面 JZM 想要创造两个数字 x 和 y,它们需要满足 x or y = T,且Lx ≤ x ≤ Rx, Ly ≤ y ≤ Ry,JZM 想知道 x and y 有多少种可能的不同的取值.若有多组 ...
- Neo4j在linux上的安装与Springboot的集成
Neo4j在linux上的安装与Springboot的集成 在linux安装: 前提:安装配置好java环境 1.下载neo4j 官方社区版下载地址:https://neo4j.com/downloa ...
- awk5个使用场景
awk简介 首先要知道awk的使用场景,需了解awk有哪些优势与短板. 关于个人近期学习awk总结其优势: awk对文本的处理运算效率同比其他工具效率高很多(比shell的for循环高10倍以上,运算 ...
- Windows编程之线程
本笔记整理自:<Windows核心编程(第五版)> 目录 何为线程 线程的开始和结束 创建线程 终止线程 线程运行时的调度和线程优先级 挂起(暂停).恢复与睡眠 挂起 恢复 睡眠 线程切换 ...
- 在终端启动Python时报错的解决
最近,在终端启动Python时,报了一个错误: 1 Failed calling sys.__interactivehook__ 2 Traceback (most recent call last) ...
- 了解Elasticsearch写入磁盘的数据
文章转载自: https://mp.weixin.qq.com/s?__biz=MzI2NDY1MTA3OQ==&mid=2247484171&idx=1&sn=985a71a ...
- 使用gitlab+jenkins+nexus拉取springcloud并根据不同模块构建docker镜像,并推送到nexus里的docker仓库
1.安装gitlab 详情看:https://www.cnblogs.com/sanduzxcvbnm/p/13023373.html 安装好gitlab后,然后创建一个普通用户,编辑用户,给用户设置 ...
- 使用python连接elasticsearch
官方文档地址:https://www.elastic.co/guide/en/elasticsearch/client/python-api/current/overview.html 安装的时候注意 ...