YAML简介:
  • yaml是一种数据格式,支持注释,换行,多行字符串,裸字符串(正序,字符串)
 
YAML作用:
  • 用于全局的配置文件
  • 用于测试用例编写
 
YAML语法规则:
  • 区分大小写
  • 使用缩进表示层级,不能使用tab键进行缩进,只能用空格
  • 缩进没有数量,只要前面对其就可以
  • 注释是#
数据组成:
Map对象
#键值对,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
}
}
]
"""
python操作yaml
python操作yaml的包:pyyaml
安装:pip3 install pyyaml
导入:import yaml
yaml.load()
yaml.load(stream,Loader)
函数的作用是用来将YAML文档转化成Python对象
stream:文件流
Loader:加载方式
返回值:返回值为一个Python字典对象
yaml.load_all()
yaml.load_all(stream,Loader)
如果string或文件包含几块yaml文档,你可以使用yaml.load_all来解析全部的文档
stream:文件流
Loader:加载方式
返回值:返回值为一个Python字典对象
yaml.dump()
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
如果yaml里面有多个结构用例,args里面有多条数据,有多少条数据,方法就可以执行多少次,所以我们可以yaml里面有多条用例,然后一个方法读取运行

6.YAML文件详解、PyYaml操作的更多相关文章

  1. [Kubernetes]yaml文件详解

    应前一段时间夸下的海口:[Kubernetes]如何使用yaml文件使得可以向外暴露服务,说过要写一篇关于yaml文件详解的文章出来的,今天来总结一下.yaml文件用在很多地方,但是这里以介绍在Kub ...

  2. k8s之yaml文件详解

    k8s之yaml文件详解 目录 k8s之yaml文件详解 1. k8s支持的文件格式 2. YAML语言格式 3. 查看api资源版本标签 4. 编写nginx-test.yaml资源配置清单 4.1 ...

  3. dart系列之:元世界pubspec.yaml文件详解

    目录 简介 pubspec.yaml支持的字段 一个例子 字段详情 总结 简介 pubspec.yaml是所有dart项目的灵魂,它包含了所有dart项目的依赖信息和其他元信息,所以pubspec.y ...

  4. K8s创建pod yaml文件详解

    kubernetes创建pod的yaml文件,参数说明 apiVersion: v1 #指定api版本,此值必须在kubectl apiversion中 kind: Pod #指定创建资源的角色/类型 ...

  5. k8s yaml文件详解

    1.yaml格式的Pod配置文件内容及注解 深入Pod之前,首先我们来了解下Pod的yaml整体文件内容及功能注解. 如下: # yaml格式的pod定义文件完整内容: apiVersion: v1 ...

  6. Kubernetes (yaml 文件详解)

    # yaml格式的pod定义文件完整内容:apiVersion: v1       #必选,版本号,例如v1kind: Pod       #必选,Podmetadata:       #必选,元数据 ...

  7. Linux中/proc目录下文件详解

    转载于:http://blog.chinaunix.net/uid-10449864-id-2956854.html Linux中/proc目录下文件详解(一)/proc文件系统下的多种文件提供的系统 ...

  8. SUBLIME TEXT 2 设置文件详解

    SUBLIME TEXT 2 设置文件详解 Preferences.sublime-settings文件: // While you can edit this file, it’s best to ...

  9. [转]AndroidManifest.xml文件详解

    转自:http://www.cnblogs.com/greatverve/archive/2012/05/08/AndroidManifest-xml.html AndroidManifest.xml ...

随机推荐

  1. Luogu5104 红包发红包 (期望)

    曾几何时有人说概率期望easy... 显然,期望是\(\frac{w}{2^n}\) #include <iostream> #include <cstdio> #includ ...

  2. Spring源码 07 IOC refresh方法2

    参考源 https://www.bilibili.com/video/BV1tR4y1F75R?spm_id_from=333.337.search-card.all.click https://ww ...

  3. 【RocketMQ】事务的实现原理

    事务的使用 RocketMQ事务的使用场景 单体架构下的事务 在单体系统的开发过程中,假如某个场景下需要对数据库的多张表进行操作,为了保证数据的一致性,一般会使用事务,将所有的操作全部提交或者在出错的 ...

  4. Android 自定义View - 柱状波形图 wave view

    前言 柱状波形图是一种常见的图形.一个个柱子按顺序排列,构成一个波形图. 柱子的高度由输入数据决定.如果输入的是音频的音量,则可得到一个声波图. 在一些音频软件中,我们也可以左右拖动声波,来改变音频的 ...

  5. Excel 笔记目录

    前言 Excel 是微软(Microsoft)公司推出的 Office 办公系列软件的一个重要组成部分,主要用于电子表格处理,可以高效地完成各种表格和图表的设计,进行复杂的数据计算和分析. 一句科普 ...

  6. 使用 Vue.js 框架后的感想

    前言 用 Vue 已经有段时间了,把自己的所想所悟写下来,每一个想法都是非常宝贵的,记录成为生活,记录成为习惯. 简化开发 Vue 是可以辅助前端工程师开发 Web App 的一种框架,它节省很多时间 ...

  7. Docker 安装 MySQL、Redis

    1 Docker 中安装 Redis 1.1 创建目录 在硬盘上创建 redis 的数据目录: mkdir -p /Users/yygnb/dockerMe/redis/data 为该目录添加权限: ...

  8. Session认证机制与JWT认证机制

    一.什么是身份认证? 身份认证(Authentication)又称"身份验证"."鉴权",是指通过一定的手段,完成对用户身份的确认.日常生活中的身份认证随处可见 ...

  9. KingbaseES例程之快速删除表数据

    概述 快速删除表中的数据 delete语句删除数据 表中的数据被删除了,但是这个数据在硬盘上的真实存储空间不会被释放. 这种删除缺点是:删除效率比较低. 这种删除优点是:支持删除部分数据,支持回滚. ...

  10. KFS邮件自动告警-数据比对-数据修复配置方法

    一.告警机制 用户可以通过配置告警机制,在比对完成和节点报错时接收到邮件告警. 告警机制共包含3个方面: 1. 告警配置 2. 用户订阅 3. 告警历史 KFS邮箱分两个部分,一个是接收告警信息的邮箱 ...