【接口自动化_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:

    @staticmethod
    def 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 yaml

class FileReader:
    """
    专门用来读取文件的,Yaml、Excel
    """
    @staticmethod
    def 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


    @staticmethod
    def 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)结果

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

探索Python日志管理的优雅之道:Loguru库入门指南

探索Python日志管理的优雅之道:Loguru库入门指南 背景:为何选择Loguru? 在Python开发过程中,日志记录是不可或缺的一部分,它帮助我们追踪程序的运行状态,调试程序错误,并记录关键信息。然而&am…

【Linux】-----权限详解

目录 一、Linux下的权限概念 Ⅰ、是什么? Ⅱ、Linux下的两种角色 角色 如何添加普通用户 身份的转化方式 身份的提权 添加普通用户至白名单 二、Linux下的权限管理 Ⅰ、文件访问者的分类(Linux下的“人”) Ⅱ、文件类型和访问权限(事物属性) 1.文件类型 …

使用AOP优化Spring Boot Controller参数:自动填充常用字段的技巧

欢迎来到我的博客,代码的世界里,每一行都是一个故事 🎏:你只管努力,剩下的交给时间 🏠 :小破站 使用AOP优化Spring Boot Controller参数:自动填充常用字段的技巧 前言为什么使用AOP为…

2-41 基于matlab的小车倒立摆系统的控制及GUI动画演示

基于matlab的小车倒立摆系统的控制及GUI动画演示。输入小车及倒立摆的初始参数,位置参数,对仿真时间和步长进行设置,通过LQR计算K值,进行角度、角速度、位置、速度仿真及曲线输出,程序已调通,可直接运行。 …

昇思MindSpore学习总结十七 —— 基于MindSpore通过GPT实现情感分类

1、要求 2、导入了一些必要的库和模块 以便在使用MindSpore和MindNLP进行深度学习任务时能使用各种功能,比如数据集处理、模型训练、评估和回调功能。 import os # 导入操作系统相关功能的模块,如文件和目录操作import mindspore # 导入MindSpore库&a…

HTTPServer改进思路2(mudou库核心思想融入)

mudou网络库思想理解 Reactor与多线程 服务器构建过程中,不仅仅使用一个Reactor,而是使用多个Reactor,每个Reactor执行自己专属的任务,从而提高响应效率。 首先Reactor是一种事件驱动处理模式,其主要通过IO多路复用…

基于WebGoat平台的SQL注入攻击

目录 引言 一、安装好JAVA 二、下载并运行WebGoat 三、注册并登录WebGoat 四、模拟攻击 1. 第九题 2. 第十题 3. 第十一题 4. 第十二题 5. 第十三题 五、思考体会 1. 举例说明SQL 注入攻击发生的原因。 2. 从信息的CIA 三要素(机密性、完整性、可用性&…

JAVA:Filer过滤器+案例:请求IP访问限制和请求返回值修改

JAVA:Filer过滤器 介绍 Java中的Filter也被称为过滤器,它是Servlet技术的一部分,用于在web服务器上拦截请求和响应,以检查或转换其内容。 Filter的urlPatterns可以过滤特定地址http的请求,也可以利用Filter对访问请求…

[数据分析]脑图像处理工具

###############ATTENTION!############### 非常需要注意软件适配的操作系统!有些仅适用于Linux,可以点进各自软件手册查看详情。 需要自行查看支持的影像模态。 代码库和软件我没有加以区分。 不是专门预处理的博客!&#xf…

Richteck立锜科技电源管理芯片简介及器件选择指南

一、电源管理简介 电源管理组件的选择和应用本身的电源输入和输出条件是高度关联的。 输入电源是交流或直流?需求的输出电压比输入电压高或是低?负载电流多大?系统是否对噪讯非常敏感?也许系统需要的是恒流而不是稳压 (例如 LED…

Mac装虚拟机占内存吗 Mac用虚拟机装Windows流畅吗

如今,越来越多的Mac用户选择在他们的设备上安装虚拟机来运行不同的操作系统。其中,最常见的是使用虚拟机在Mac上运行Windows。然而,许多人担心在Mac上装虚拟机会占用大量内存,影响电脑系统性能。此外,有些用户还关心在…

k8s中部署nacos

1 部署nfs # 在k8s的主节点上执行 mkdir -p /appdata/download cd /appdata/download git clone https://github.com/nacos-group/nacos-k8s.git 将nacos部署到middleware的命名空间中 kubectl create namespace middleware cd /appdata/download/nacos-k8s # 创建角色 kub…

图论模型-迪杰斯特拉算法和贝尔曼福特算法★★★★

该博客为个人学习清风建模的学习笔记,部分课程可以在B站:【强烈推荐】清风:数学建模算法、编程和写作培训的视频课程以及Matlab等软件教学_哔哩哔哩_bilibili 目录 ​1图论基础 1.1概念 1.2在线绘图 1.2.1网站 1.2.2MATLAB 1.3无向图的…

ABAP打印WORD的解决方案

客户要求按照固定格式输出到WORD模板中,目前OLE和DOI研究了均不太适合用于这种需求。 cl_docx_document类可以将WORD转化为XML文件,利用替换字符串方法将文档内容进行填充同 时不破坏WORD现有格式。 首先需要将WORD的单元格用各种预定义的字符进行填充…

canvas:矢量点转栅格

案例描述 ArcGIS提供了“点转栅格”的工具,可以将矢量点转换为栅格数据,以下尝试基于canvas绘图技术,实现经纬度矢量点转换为canvas栅格数据,并在Cesium.js三维地图中进行渲染。 原始数据 转出栅格 案例分析 实现的关键点在于:如何将经纬度坐标与canvas画布坐标进…

【Vue3】工程创建及目录说明

【Vue3】工程创建及目录说明 背景简介开发环境开发步骤及源码 背景 随着年龄的增长,很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来,技术出身的人总是很难放下一些执念,遂将这些知识整理成文,以纪念曾经努力学习奋斗的日…

Figma 中文版指南:获取和安装汉化插件

Figma是一种主流的在线团队合作设计工具,也是一种基于 Web 端的设计工具。在当今的设计时代,Figma 的使用满足了每个人的设计需求,不仅可以实现在线编辑,还可以方便日常管理,有效提高工作效率。然而,相信很…

Java查询ES报错 I/O 异常解决方法: Request cannot be executed; I/O reactor status: STOPPED

问题 ES Request cannot be executed; I/O reactor status: STOPPED 报错解决 在使用ES和SpringBoot进行数据检索时,在接口中第一次搜索正常。第二次在搜索时在控制台就会输出Request cannot be executed; I/O reactor status: STOPPED错误 原因 本文错误是因为在使…

51单片机14(独立按键实验)

一、按键介绍 1、按键是一种电子开关,使用的时候,只要轻轻的按下我们的这个按钮,按钮就可以使这个开关导通。 2、当松开这个手的时候,我们的这个开关,就断开开发板上使用的这个按键,它的内部结构&#xff…

用Java手写jvm之实现java -version的效果

写在前面 源码 。 本文来用纯纯的Java代码来实现java -version的效果,就像下面这样: 1:程序 这里输出类似这样的: java version "9" Java(TM) SE Runtime Environment (build 9181) Java HotSpot(TM) 64-Bit Serve…