python之yaml技术(可用于写接口自动化的测试用例文件)

一.yaml介绍

yaml文件是一种配置文件类型,相比较ini,conf配置文件来说,更加的简洁,操作也更加简单,同时可以存放不同类型的数据。

yaml使用场景

  • 配置文件

  • 测试用例

二.yaml语法

  • 大小写敏感
  • 使用缩进表示层级关系
  • 缩进时不允许使用Tab,只允许使用空格
  • 缩进的空格数目不重要,只要相同层级的元素左对齐即可
  • # 表示注释,从它开始到行尾都被忽略

三.环境准备

第一步:打开pycharm创建一个项目pythonProject20231125

第二步:创建一个包(Python Package)名为config,再创建一个file名为conf.yaml

第三步:创建一个包(Python Package)名为tools,再创建一个Python File名为yamlControl.py

conf.yaml是配置文件

yamlControl模块是读取 conf.yaml配置数据的

四.yaml使用

1.字典

格式

# 下面格式读到Python里会是个dict(字典)
name: 灰蓝
age: 0
job: Tester

查看yaml数据(通过yamlControl模块写代码查看配置文件输出数据)

import yaml
#读取yaml文件-单个文件
# 加上 ,encoding='utf-8',处理配置文件中含中文出现乱码的情况
def get_yaml_data(fileDir):#打开文件fo=open(fileDir,'r',encoding='utf-8')#调用方法res=yaml.load(fo,Loader=yaml.FullLoader)return res
if __name__ == '__main__':res=get_yaml_data('../config/conf.yaml')print(res)

运行结果:

2.列表

格式

# 下面格式读到Python里会是个list(列表)
- 灰蓝
- 0
- Tester

运行结果:

3.复合结构

举例(列表里套字典):

# 下面格式读到Python里是个list里包含dict
- name: 灰蓝age: 0job: Tester
- name: Jamesage: 30

运行结果:

4.基本类型

yaml中有以下基本类型:

  • 字符串

  • 整型

  • 浮点型

  • 布尔型

  • null

  • 时间

  • 日期

我们写个例子来看下:

# 这个例子输出一个字典,其中value包括所有基本类型
str: "Hello World!"
int: 110
float: 3.141
boolean: true  # or false
None: null  # 也可以用 ~ 号来表示 null
time: 2016-09-22t11:43:30.20+08:00  # ISO8601,写法百度
date: 2016-09-22  # 同样ISO8601

运行结果:

D:\python3.9\python.exe D:\sonQin\pythonProject20231125\tools\yamlControl.py 
{'str': 'Hello World!', 'int': 110, 'float': 3.141, 'boolean': True, 'None': None, 'time': datetime.datetime(2016, 9, 22, 11, 43, 30, 200000, tzinfo=datetime.timezone(datetime.timedelta(seconds=28800))), 'date': datetime.date(2016, 9, 22)}Process finished with exit code 0

5.空格或特殊字符

注意:如果字符串没有空格或特殊字符,不需要加引号,但如果其中有空格或特殊字符,则需要加引号了

举例

str: 灰蓝
str1: "Hello World"
str2: "Hello\nWorld"

运行结果:

6.单引号与双引号

这里要注意单引号和双引号的区别,单引号中的特殊字符转到Python会被转义,也就是到最后是原样输出了,双引号不会被Python转义,到最后是输出了特殊字符;

来个例子理解下:

str1: 'Hello\nWorld'
str2: "Hello\nWorld"

运行结果:

7.引用

&* 用于引用

语法

name: &name 灰蓝
tester: *name

运行结果:

8.强制转换

yaml是可以进行强制转换的,用 !! 实现,如下:

str: !!str 3.14
int: !!int "123"

运行结果:

明显能够看出123被强转成了int类型,而float型的3.14则被强转成了str型。

9.分段

在同一个yaml文件中,可以用 --- 来分段,这样可以将多个文档写在一个文件中

---
name: James
age: 20
---
name: Lily
age: 19

这时候我们就得用到我们的 load_all() 方法出场了,load_all() 方法会生成一个迭代器,在yamlControl模块中添加一个get_yaml_datas(fileDir)方法,可以用for循环输出出来:

yamlControl模块新增的代码(注意调用的是load_all()方法)

运行结果:

10.写yaml格式的内容

调用dump()方法

举例

在yamlControl模块新增set_yaml_data(fileDir)方法

运行结果:

最后conf.yaml文件和yamlControl.py文件在资源绑定中有,如有需要可自行下载

(如有问题,可在评论区留言)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/173909.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle关联更新

业务场景中需要对特定数据进行关联更新,记录一下关联更新语法: MERGE INTO fine_record_execute targ USING (SELECT "id","tname"FROM fine_record_executeWHERE "username" LIKE %目标人物%AND "time">20…

RV1126芯片中的V4L2驱动开发

RV1126芯片概述 RV1126芯片是瑞芯微推出的一款高性能嵌入式人工智能处理器,具有较强的图像处理和音视频处理能力。它采用了双核Cortex-A7架构和一颗DSP核心,支持多种接口和外设,如MIPI CSI、HDMI、USB等,可以广泛应用于物联网、智…

Pytorch深度学习实战2-1:详细推导Xavier参数初始化(附Python实现)

目录 1 参数初始化2 Xavier参数初始化原理2.1 前向传播阶段2.2 反向传播阶段2.3 可视化思考 3 Python实现 1 参数初始化 参数初始化在深度学习中起着重要的作用。在神经网络中,参数初始化是指为模型中的权重和偏置项设置初始值的过程。合适的参数初始化可以帮助模型…

单片机毕设实物买的成品,论文是自己查资料和照着实物写的

单片机毕设实物买的成品,论文是自己查资料和照着实物写的,算学术不端吗? 很多人的想法可能是这样的: 一般来说,毕业论文是独立完成的学术研究,需要表明作者自己的思考和研究成果,应该包括自己的…

Google Shopping Action

Google Shopping Action是Google推出的一项在线购物服务,可以帮助零售商将产品推广和销售到Google平台上的消费者中。通过Google Shopping Action,用户可以在谷歌搜索页面上直接购买商品,而不需要离开搜索结果页面。 Google Shopping Action的…

Java中使用 com.google.zxing 生成二维码

目录 一、依赖jar二、自定义工具类三、生成二维码 一、依赖jar <!-- 二维码生成jar --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.3.0</version></dependency>二、自定…

饺子馆外卖点餐系统小程序效果如何

餐饮行业所涵盖的细分类目非常广&#xff0c;同时又是经济发展的重要支撑&#xff0c;市场规模非常高。饺子是很多人非常喜欢吃的食物&#xff0c;尤其过年的时候&#xff0c;必是少不了几碗饺子&#xff0c;平时也有大量人前往饺子馆。 但相对比火锅、炒菜馆则少些竞争力&…

原创文章生成器-批量原文高质量伪原创

在信息爆炸的时代&#xff0c;创作者们面临的挑战愈发严峻。写一篇原创文章&#xff0c;不仅需要脑洞大开&#xff0c;还得担心自己的文字是否能够迎合读者口味。原创文章生成器只需输入标题或关键词&#xff0c;即可轻松生成原创文章。而与此同时&#xff0c;147SEO改写软件也…

语音领域的几个特征的含义

F0&#xff08;音高相关&#xff09; 在语音信号处理中&#xff0c;F0代表基频&#xff08;Fundamental Frequency&#xff09;&#xff0c;也被称为音高或声音的基本频率。基频是指声音波形中最低频率的周期性振荡&#xff0c;它决定了人的声音听起来是低音还是高音。基频通常…

vite搭建vue2项目

https://blog.csdn.net/Th_rob/article/details/126025822 https://blog.csdn.net/chenacxz/article/details/132361470

Vatee万腾的数字创新征途:vatee科技力量的独特奇点

在数字化的时代浪潮中&#xff0c;Vatee万腾如一颗耀眼的明星&#xff0c;以其独特的科技奇点引领着数字创新的征途。无论是在人工智能、大数据、云计算&#xff0c;还是智能化领域&#xff0c;Vatee万腾都展现出了与众不同的创新力量&#xff0c;为科技征途描绘了独一无二的奇…

【Springboot系列】SpringBoot整合WebSocket,既然如此简单(含源码)

文章目录 前言&#xff1a;什么是WebSocket&#xff1f;Spring Boot中的WebSocket支持WebSocket和HTTP优劣势WebSocket的优势&#xff1a;1.实时性&#xff1a;2.较低的延迟&#xff1a;3.较小的数据传输量&#xff1a;4.更好的兼容性&#xff1a; HTTP的优势&#xff1a;1.简单…

教师如何高质量备课

备课是教学工作中不可或缺的一部分。高质量的备课不仅可以提高课堂效率&#xff0c;还可以更好地激发学生的学习兴趣和积极性。那么&#xff0c;如何高质量备课呢&#xff1f; 深入了解学生 备课的目的是教授知识&#xff0c;让学生掌握知识。因此&#xff0c;了解学生的需求和…

「直播预告」替代 Oracle,我们还有多长的路要走?

数字经济浪潮席卷全球&#xff0c;我国数字经济也进入快速发展阶段&#xff0c;作为数字化重要载体&#xff0c;国产软件的重要性不言而喻。近年来&#xff0c;国际局势复杂多变&#xff0c;在客观要求和主观需求的双重驱动下&#xff0c;核心技术自主可控的紧迫性也愈加凸显。…

​使用PotPlayer播放器查看软解和硬解4K高清视频时的CPU及GPU占用情况​

目录 1、问题说明 2、PotPlayer播放器介绍 3、视频的软解与硬解 4、使用PotPlayer查看4K高清视频软解和硬解时的CPU占用情况 4.1、使用软解时CPU和GPU占用情况 4.2、使用硬解时CPU和GPU占用情况 5、最后 VC常用功能开发汇总&#xff08;专栏文章列表&#xff0c;欢迎订阅…

学嵌入式,已经会用stm32做各种小东西了,下一步是什么

学嵌入式&#xff0c;已经会用stm32做各种小东西了&#xff0c;下一步是什么&#xff0c;研究stm32的内部吗&#xff1f; 针对题主这种类型的&#xff0c;首先我想提出几个技术问题。 1&#xff0c;除了那几个常用的外设&#xff0c;stm32上集成的众多外设是否都有实际的使用经…

Day58权限提升-网站权限后台漏洞第三方获取

webshell 一般我们的渗透流程就是信息收集&#xff0c;发现漏洞&#xff0c;漏洞利用&#xff0c;一些漏洞成功之后获得一些相应的权限&#xff0c;还有一些是漏洞利用成功之后并没有取得的权限&#xff0c;而这个权限是要通过漏洞利用之后在利用其它地方取货的权限。 权限的获…

百度人工智能培训第二天笔记

参加了百度人工智能初步培训&#xff0c;主要是了解一下现在人工智能的基本情况&#xff0c;以便后续看可以参与一些啥&#xff1f; 下面就继续前一天的内容记录。 一、先做电动自行车的电梯里检测 先进行图片资料的上传与标注&#xff0c;这个昨天的最好也说了一下。 训练完后…

sql中的left join, right join 和inner join,union 与union all的用法

left join&#xff0c; right join 和inner join&#xff1a;这些都是SQL中用来连接两个或多个表的操作。 union&#xff0c;union all&#xff1a;用于合并两个或多个 SELECT 语句的结果。 但是有时候&#xff0c;对于Select出来的结果集不是很清楚。 假设我们有两张表。pers…

让CHAT简单说明下软件工程师的工作性质

问CHAT&#xff1a;软件工程师的工作性质是什么&#xff1f; CHAT回复&#xff1a;软件工程师的工作性质主要包括以下几点&#xff1a; 1. 解决问题&#xff1a;软件工程师的很大一部分工作就是解决问题&#xff0c;这可能是来自客户的特定需求&#xff0c;也可能是软件开发过…