从0开始python学习-43.通过yaml实现不同文件之间参数的关联

目的:

1. 统一管理接口关联的中间变量

2. 解决多个py文件中间的中间变量关联的问题

新建一个yaml_util.py进行封装读写清空yaml方法

# 读取
def read_yaml(key): with open("extract.yaml",encoding="utf-8") as f: #这里的文件如果没有会自动创建value = yaml.safe_load(f)return value[key] # 注意这里一定要传入key,因为同一个yaml文件会写入很多个key,如果不指定会全部读取到
# 写入
def writer_yaml(data):with open("extract.yaml",encoding="utf-8",mode="a+") as f:  # 这里一定要使用追加的方式写入,不然会将之前的写入的清空掉yaml.safe_dump(data,stream=f,allow_unicode=True)
# 清空
def clean_yaml():with open("extract.yaml",encoding="utf-8",mode="w") as f:pass

测试用例py文件使用方法,并将需要的参数写入到指定yaml文件中

class TestApi:def test_phpwind(self):url = 'http://aaa/phpwind/'res = RequestUtil().send_request(method="get",url=url)# 通过yaml的方式存储token,这样即使跨文件也可以使用res_token = re.search('name="csrf_token" value="(.*?)"', res.text)data = {"csrf_token":res_token.group(1)}  # 注意这里应该是键值对的形式写入的,注意yaml的格式writer_yaml(data) # 将内容写入到指定yaml文件中def test_phpwind_login(self):print(read_yaml("csrf_token"))url = 'http://aaa/phpwind/index.php?m=u&c=login&a=dorun'header = {"Accept":"application/json, text/javascript, /; q=0.01","X-Requested-With":"XMLHttpRequest"}data = {"username":"aaa","password":"aaa","csrf_token":read_yaml("csrf_token"), # 根据指定key读取需要的参数"backurl":"http://aaa/phpwind/","invite":""}res = RequestUtil().send_request(method="post",url=url, data=data, headers=header)print(res.json())

此时就完成了通过yaml进行读写的能力,但是由于每次调用用例都会写入,因而需要清空历史的写入的数据,保证使用的是最新且唯一的数据,因而就需要使用conftest.py进行,注意这里fixture的作用域是整个session

@pytest.fixture(scope="session",autouse=True)
def clean_extract():# 在用例执行前清空历史yaml数据clean_yaml()# 在用例执行之后清空历史yaml数据,不建议使用,不利于排查问题# yield# clean_yaml()

 

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

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

相关文章

mnn-llm: 大语言模型端侧CPU推理优化

在大语言模型(LLM)端侧部署上,基于 MNN 实现的 mnn-llm 项目已经展现出业界领先的性能,特别是在 ARM 架构的 CPU 上。目前利用 mnn-llm 的推理能力,qwen-1.8b在mnn-llm的驱动下能够在移动端达到端侧实时会话的能力,能够在较低内存…

MySQL之视图外连接、内连接和子查询的使用

一、视图 1.1 含义 虚拟表,和普通表一样使用 1.2 操作 创建视图 create view 视图名 as 修改视图 方式一: create or replace view 视图名 as 【查看视图相关字段】 方式二: alter view 视图名 as 【查看的SQL语句】 查看视图 方式一&…

Baumer工业相机堡盟工业相机如何联合NEOAPI SDK和OpenCV实现相机图像转换为AVI视频格式(C#)

Baumer工业相机堡盟工业相机如何联合NEOAPI SDK和OpenCV实现相机图像转换为视频格式(C#) Baumer工业相机Baumer工业相机的图像转换为OpenCV的图像的技术背景在NEOAPI SDK里实现相机图像转换为视频格式 工业相机通过OpenCV实现相机图像转换为视频格式的优…

Docker Zookeeper 安装 简单教程

现在各种组件大部分都能找到Docker的镜像了,Docker容器化安装很多复杂中间件都变得非常轻松了。 1.拉取镜像 以下命令默认是拉取最新版本 zookeeper:latest docker pull zookeeper 注: 若要拉取指定版本如3.7,则可以执行命令 docker pull zookeeper:…

Nginx快速入门:Nginx实现高可用|结合keepalived实现主备节点(九)

0. 引言 在生产中我们要尽可能避免单点故障,nginx也不例外,因此搭建主备节点必不可少,今天我们来学习下如何利用keepalived实现主备 1. keepalived简介 keepalived 是一个LINUX系统中开源的负载均衡和故障转移软件,它主要用于高…

2024年阿里云、腾讯云、华为云、LightNode、硅云服务器如何选?怎么买最划算?[最新价格表]

很多小伙伴都有一颗上云的心,包括我自己 有事没事的折腾一下自己的小破站,也挺有意思的! 那么,云服务器哪家好?优惠力度哪家大?活动入口哪里进?云服务器如何配置?如何选型&#xf…

K8S集群部署解决工作节点couldn‘t get current server API group list问题

最近在自己电脑上装了VMWare Player,在上面装了两个Ubuntu虚拟机,为了方便学习云原生技术,决定在上面装一个2个节点(一个控制面,一个工作节点)的K8S集群。 参考这篇文章: Ubuntu 22.04 搭建K8…

kubectl的插件安装工具krew

最近得知一个kubectl插件安装工具,叫做krew。 官网地址是:Krew – kubectl plugin manager 安装krew 按照官网的做法,一直安装失败,于是拆解步骤,一步一步下载离线安装。 1、下载krew.yaml 地址:https:…

体验ubuntu,windows双系统

大家好,这里是七七,今天来分享一下安装双系统的经历,这不是用虚拟机来运行哦。 一、安装过程 首先是下载一个ubuntu(对于新手建议下载ubuntu kylin,这是国产的哦)的镜像,并且对内存进行压缩、分区。然后用…

Proteus 各版本安装指南

Proteus下载链接 https://pan.baidu.com/s/1vHgg8jK9KSHdxSU9SDy4vQ?pwd0531 1.鼠标右击【Proteus8.15(64bit)】压缩包(win11及以上系统需先点击“显示更多选项”)【解压到Proteus8.15(64bit) 】。 2.打开解压后的文件夹&#…

自建数据库如何选择阿里云服务器配置?

阿里云服务器配置如何选择?用于自建数据库可以第七代云服务器ECS计算型c7、通用型g7或内存型r7实例,企业级独享型云服务器,CPU采用第三代Intel Xeon可扩展处理器(Ice Lake),基频2.7 GHz,全核睿频…

适用于生物行业的生信云平台

随着基因检测技术的不断发展,生物信息云平台在基因检测行业的应用越来越广泛。生物信息云平台是一种基于云计算的技术,可以将基因检测数据存储在云端,并通过数据分析、挖掘等技术手段,对基因数据进行处理、分析和解读。 这种技术的…

Linux安装nginx(带http ssl)

nginx安装 nginx文件 以及gcc pcre zlib openssl 网盘下载 1.安装gcc yum -y install gcc gcc-c 2.安装pcre rpm -ivh pcre-8.32-17.el7.x86_64.rpm --force --nodeps rpm -ivh pcre-devel-8.32-17.el7.x86_64.rpm --force --nodeps 3.安装zlib tar -zxvf zlib-1.2.11.ta…

小程序弹窗

小程序弹窗的例子如下: 确认弹窗: wx.showModal({title: 提示,content: 确定要删除该记录吗?,success: function (res) {if (res.confirm) {console.log(用户点击确定)// 执行删除操作} else if (res.cancel) {console.log(用户点击取消)}}…

metaSPAdes,megahit,IDBA-UB:宏基因组装软件安装与使用

metaSPAdes,megahit,IDBA-UB是目前比较主流的宏基因组组装软件 metaSPAdes安装 GitHub - ablab/spades: SPAdes Genome Assembler #3.15.5的预编译版貌似有问题,使用源码安装试试 wget http://cab.spbu.ru/files/release3.15.5/SPAdes-3.15.5.tar.gz tar -xzf SP…

C++ 给父类带参构造函数的赋值

在类的使用中,默认的构造函数不带任何参数,但是也会因为需要而使用带参数的构造函数。 在带参的构造函数中,是如何继承的呢,这里我们通过使用基类,子类,孙类的两重继承来观察,如何给带参构造函数…

完美版视频网站模板 – 苹果CMS v10大橙子vfed主题

源码下载: https://download.csdn.net/download/m0_66047725/88700504 这次提供的大橙子 vfed 模板 已经完美,只去除了授权验证和正版主题神秘后门,不影响任何功能体验性。主题优化:全站响应式自带主题设置面板自带联盟资源库大全…

c yuv422转yuv420p

思路: yuv422 存储格式为 y u y v y u y v y u y v y u y v yuv420p 存储最简单,先存所以的y,再存u,最后v 所以先把422所有的y存在一起,再提奇数行的u ,偶数行舍弃。提…

【C/C++】开源串口库 CSerialPort 应用

文章目录 1、简述2、效果图2.1、命令行(不带GUI)2.2、GUI(这里用的Qt) 3、串口硬件知识普及4、核心实现4.1、Qt的pro文件4.2、main文件4.3、SSerialPort类4.3.1、头文件4.3.2、源文件 4.4、Linux下的CMakeLists.txt 1、简述 本文…

Spring Security之认证

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 Spring Security之认证 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 系列文章目录前言一、什么是Spring…