【接口自动化_08课_Pytest+Yaml+Allure框架】

上节课一些内容 的补充

1、openxl这个方法,第一个元素是从1开始的,不是从0开始

回写的列在程序里写的是11,是因为是固定值

一、1. Yaml入门及应用

 1、什么是yaml

YAML(/ˈjæməl/,尾音类似camel骆驼)是一个可读性高,用来表达数据序列化的格式。

和excel没有太大的区别,只是格式不一样而已。

序列化 : 特定的格式需要去进行遵守。

2、yaml的语法

基本语法:(和python有点类似)
- 大小写敏感
- 使用缩进表示层级关系
- 缩进不允许使用tab(前面的空格),只允许空格 ---总结一句,不要用tab
- 缩进的空格数不重要,只要相同层级的元素左对齐即可
- '#' 表示注释

 对空格数量不重要,左对齐的解释:

1)正常转换:

单个空格

多个空格

 

2)左对齐,但无空格

3) 未左对齐

4)报错--使用tab

 

3、Yaml的数据格式

Yaml可以写什么内容?(只要你在python用到一些类型和数据格式都是可以的)--了解

- 纯量(scalars):单个的、不可再分的值(例如数字、字符)
-  数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
-  对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)

1)数组的写法:-开头+空格+数据

用 - 开头,后面跟一个空格(数量不做限制)

- 空格(数量不做限制) 数据1

-

 字符串18

与整型18

2)对象的写法:key: 空格(数量不做限制) value

3)数组套数组(列表套列表)

错误写法:

正确写法:通过- 来分层级,一个左对齐的 - 代表一个层级

 4)数组套对象(列表套字典)

4、读取yaml文件

yaml文件的创建

不管是什么文件都会有扩展名:xlsx/xls 、 doc /docx 、exe

yaml文件也有扩展名:yaml yml 两种扩展名都ok的

和读取text普通文件的方式一样,,

with open(file_path, "r", encoding="utf-8") as file:

但是读取yaml文件,需要

1)把模板调整成Yaml 格式,文件需要是.yaml

yaml中是用null代表空,但是由python读取后,是用none代表空

2)读取方法:safe_load()

需要引入pyyaml包

pip install pyyaml

pip install pyyaml -i https://pypi.tuna.tsinghua.edu.cn/simple

3)读取的写法

import yaml  # 普通文件的读取# 读取数据
file_path = "test_yaml_01.yaml"
with open(file_path, "r", encoding="utf-8") as file:# 读取data = yaml.safe_load(file)print(data)

运行结果:

yaml中是用null代表空,但是由python读取后,是用none代表空

[{'age': '18', 'ctiy': '长沙', 'name': '哈米', 'res': '登录失败'}, {'age': '19', 'ctiy': '长沙2', 'name': '哈米1', 'res': None}]

 5、写入yaml文件

1)修改了data数据,但是没写入

data[0]["res"] ,整个data共2个字典元素,data[0]是第一个字典元素,data[0]["res"]是第一个字典元素里的res

yaml文件内容不变

2)修改了data数据,写入了yaml

需要写:

allow_unicode=True,避免乱码

查看yaml文件,已经写入了

 二、pytest+yaml+allure框架

1、文件维护(2处)

1)data目录需要是yaml格式的文件和内容

2)config.py文件 :维护好文件路径:

2、 在FileDataDriver.py文件封装读取和写入的方法

1)读取方法的封装

import yaml# 用来读取和写入excel\yaml
from P08_PytestFrame.config import *class FileDataDriver:@staticmethoddef read_yaml(file_path=YAMLDATAURL):with open(file_path, "r", encoding="utf-8") as file:# 读取data = yaml.safe_load(file)return data
1.2)修改核心执行器里的数据源读取方式需要修改

pip install pymysql
pip install jinja2 -i https://pypi.tuna.tsinghua.edu.cn/simple
 1.2) 执行main方法

 2)写入方法的封装

excel文件的写入,需要控制行和列;yaml文件(字典类型)的写入需要控制下标

data[id][key]

字典,无序。

3、excele文件如何转为yaml

1. 读取EXCEL --- [{},{}]

2. 写入 yaml即可

这种写法,最后写出来 是字符串格式

自己手写是字典格式

1) 数据驱动,先读excel文件的数据

import openpyxl
from Dome_ExcelWriteYaml.config import *
import yamlclass FileReader:"""专门用来读取文件的,Yaml、Excel"""@staticmethoddef readExcelToDict(file_path=CASEDATAURL,sheet_name=SHEETNAME):# 打开现有的Excel文件或创建新的文件print(CASEDATAURL)try:workbook = openpyxl.load_workbook(file_path)except FileNotFoundError:workbook = openpyxl.Workbook()# 选择或创建指定的工作表if sheet_name in workbook.sheetnames:worksheet = workbook[sheet_name]else:worksheet = workbook.create_sheet(sheet_name)# 获取列名headers = [cell.value for cell in worksheet[2]]# 将数据存储为字典data = []# 把小的数据从第三行开始for row in worksheet.iter_rows(min_row=3, values_only=True):data.append(dict(zip(headers, row)))workbook.close()return data@staticmethoddef write_yaml(data, file_path=YAMLDATA):"""写入yaml文件,写入无序没有关系,通过key获取数据:param data: 需要写入的数据:param file_path: 文件路径:return:"""with open(file_path, 'w', encoding='utf-8') as file:# 可以结合异常处理进行封装try:yaml.dump(data, file, allow_unicode=True)print("YAML数据写入成功。")except yaml.YAMLError as e:print(f"YAML数据写入失败: {e}")

2)执行main方法

from Dome_ExcelWriteYaml.Common.FileDataDriver import FileReader
data = FileReader.readExcelToDict()
print(data)
FileReader.write_yaml(data)

3)结果

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

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

相关文章

Finding columns with a useful data type 找到合适的数据列的类型

Finding columns with a useful data type 在确定了原始查询的数据列数之后,接下来就是要确定合适的数据列的数据类型。可以用 SELECT a 的方式判断对应的数据列方式,有时候可以通过错误信息判断数据列的类型。如果服务器的响应没有报错,而…

Docker启动PostgreSql并设置时间与主机同步

在 Docker 中启动 PostgreSql 时,需要配置容器的时间与主机同步。可以通过在 Dockerfile 或者 Docker Compose 文件中设置容器的时区,或者使用宿主机的时间来同步容器的时间。这样可以确保容器中的 PostgreSql 与主机的时间保持一致,避免在使…

启动流程和切换流程

启动流程 #mermaid-svg-iUWGw8xl1SyAmoo9 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-iUWGw8xl1SyAmoo9 .error-icon{fill:#552222;}#mermaid-svg-iUWGw8xl1SyAmoo9 .error-text{fill:#552222;stroke:#552222;}#…

C语言·分支和循环语句(超详细系列·全面总结)

前言:Hello大家好😘,我是心跳sy,为了更好地形成一个学习c语言的体系,最近将会更新关于c语言语法基础的知识,今天更新一下分支循环语句的知识点,我们一起来看看吧~ 目录 一、什么是语句&#xf…

linux配置podman阿里云容器镜像加速器

1.下载podman yum install -y podman systemctl status podman systemctl start podman 2.获取阿里云个人容器镜像加速器地址 访问阿里云官网:首先,您需要访问阿里云(Alibaba Cloud)的官方网站。阿里云官网的URL是:…

OS:处理机进程调度

1.BackGround:为什么要进行进程调度? 在多进程环境下,内存中存在着多个进程,其数目往往多于处理机核心数目。这就要求系统可以按照某种算法,动态的将处理机CPU资源分配给处于就绪状态的进程。调度算法的实质其实是一种…

对于品牌方来说,小红书探店应该怎么做?

小红书是中国最大的生活分享社交平台之一,它现在不仅仅是一个购物推荐平台,也是一个探店的好去处。 用户在网络上看到一家心仪的店铺,却又无法亲身到访,对店铺的产品存疑,这时候就会在小红书搜索具体的相关店铺信息。 …

【代码随想录】【算法训练营】【第58天 4】 [卡码104]建造最大岛屿

前言 思路及算法思维,指路 代码随想录。 题目来自 卡码网。 day 58,周四,ding~ 题目详情 [卡码104] 建造最大岛屿 题目描述 卡码104 建造最大岛屿 LeetCode类似题目827 最大人工岛 解题思路 前提: 思路: 重点…

【LeetCode】从前序与中序遍历序列构造二叉树

目录 一、题目二、解法完整代码 一、题目 给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。 示例 1: 输入: preorder [3,9,20,15,7], inorder [9…

在西藏上大学是一种什么体验?如何解决语言问题?

在西藏地区上大学是一种独特而难忘的经历,它不仅提供了接触壮丽自然风光和深入了解藏族文化的机会,也带来了适应高原气候和生活方式的挑战。学生将在这里体验到丰富的教育资源和学术研究素材,同时在生活和人际交往中培养适应能力和独立性。这…

密码学基础-Hash、MAC、HMAC 的区别与联系

密码学基础-Hash、MAC、HMAC 的区别与联系 Hash Hash 是一种从一段数据中创建小的数字“指纹”的方法。就像一个人的指纹代表一个人的信息一样,Hash 对输入的数据进行整理,生成一个代表该输入数据的“指纹” 数据。通常该指纹数据也可称之为摘要、散列…

文件包含漏洞: 函数,实例[pikachu_file_inclusion_local]

文件包含 文件包含是一种较为常见技术,允许程序员在不同的脚本或程序中重用代码或调用文件 主要作用和用途: 代码重用:通过将通用函数或代码段放入单独的文件中,可以在多个脚本中包含这些文件,避免重复编写相同代码。…

RabbitMQ的学习和模拟实现|Protobuf的介绍和简单使用

protbuf的介绍和简单使用 项目仓库:https://github.com/ffengc/HareMQ protobuf的安装:README-cn.md#环境配置 基于Protobuf的一个小项目:基于protobuf和httplib的在线通讯录项目框架|Protobuf应用小项目 protobuf是什么 Pro…

TinyVue:与 Vue 交往八年的组件库

本文由体验技术团队莫春辉老师原创~ 去年因故停办的 VueConf,今年如约在深圳举行。作为东道主 & 上届 VueConf 讲师的我,没有理由不来凑个热闹。大会结束后,我见裕波在朋友圈转发 Jinjiang 的文章《我和 Vue.js 的十年》,我就…

openlayers 3d 地图 非三维 立体地图 行政区划裁剪 地图背景

这是实践效果 如果没有任何基础 就看这个专栏:http://t.csdnimg.cn/qB4w0 这个专栏里有从最简单的地图到复杂地图的示例 最终效果: 线上示例代码: 想要做这个效果 如果你的行政区划编辑点较多 可能会有卡顿感 如果出现卡顿感需要将边界点相应…

Python爬虫-淘宝搜索热词数据

前言 本文是该专栏的第70篇,后面会持续分享python爬虫干货知识,记得关注。 在本专栏之前,笔者有详细针对“亚马逊Amazon搜索热词”数据采集的详细介绍,对此感兴趣的同学,可以往前翻阅《Python爬虫-某跨境电商(AM)搜索热词》进行查看。 而在本文,笔者将以淘宝为例,获取…

【扩散模型(五)】IP-Adapter 源码详解3-推理代码

系列文章目录 【扩散模型(一)】中介绍了 Stable Diffusion 可以被理解为重建分支(reconstruction branch)和条件分支(condition branch)【扩散模型(二)】IP-Adapter 从条件分支的视…

【OAuth2系列】集成微信小程序登录到 Spring Security OAuth 2.0

作者:后端小肥肠 创作不易,未经允许严禁转载。 姊妹篇: 【Spring Security系列】权限之旅:SpringSecurity小程序登录深度探索_spring security 微信小程序登录-CSDN博客 目录 1. 前言 2. 总体登录流程 3. 数据表设计 3.1. sys…

Python测试服务器连接的实战代码

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

windows server——4.安装DNS管理器

windows server——4.安装DNS管理器 一、准备二、安装DNS管理器1.打开服务器管理器2.添加dns服务器 三、验证 一、准备 windows server电脑(已安装IIS) 静态网站数据包 二、安装DNS管理器 1.打开服务器管理器 2.添加dns服务器 点击管理——添加角色和…