接口框架项目实战-pytest(六)csv数据驱动
csv 数据驱动 为了解决数据量大 导致yaml文件重复太多
yaml_util.py
import osimport jsonpath
import yamlfrom pytestdemo.common.base_util import get_path
from pytestdemo.common.csv_util import analysis_parametersdef read_config_file(one_node,two_node):with open(f'{get_path()}/common/config.yml',encoding="utf-8") as f:value=yaml.load(f,yaml.FullLoader)# print(value[one_node][two_node])return value[one_node][two_node]
def read_extract_file(node_name):with open(f'{get_path()}/common/extract.yml',encoding="utf-8") as f:value=yaml.load(f,yaml.FullLoader)return value[node_name]
def write_extract_file(data):with open(f'{get_path()}/common/extract.yml',encoding="utf-8",mode="a") as f:yaml.dump(data,f,allow_unicode=True)def clean_extract_file():with open(f'{get_path()}/common/extract.yml',encoding="utf-8",mode="w") as f:f.truncate()
def read_testcase_yaml(file_path):print(f'{get_path()}{file_path}')with open(f'{get_path()}{file_path}',encoding="utf-8") as f:value = yaml.load(f, yaml.FullLoader)if len(value)==1:if jsonpath.jsonpath(value,"$..parameters"):return analysis_parameters(value)return value
if __name__ == '__main__':# print (read_config_file("base","base_php_url"))print(read_testcase_yaml("\\testcases\\get_token.yml"))
csv_util.py
import csv
import jsonfrom pytestdemo.common.base_util import get_pathdef read_csv(file_path):data_list=[]with open(f'{get_path()}{file_path}',encoding="utf-8") as f:reader = csv.reader(f)for r in reader:data_list.append(r)return data_list
def analysis_parameters(case_data):keys=dict(*case_data).keys()case_data_str=json.dumps(case_data)list=[]if "parameters" in keys:for p_key,p_value in dict(*case_data)["parameters"].items():p_list=read_csv(p_value)for r in range(1,len(p_list)):temp_case_data_str=case_data_strfor c in range(0,len(p_list[r])):temp_case_data_str=temp_case_data_str.replace("$csv{"+p_list[0][c]+"}",p_list[r][c])list.extend(json.loads(temp_case_data_str))return list
# if __name__ == '__main__':
# print(read_csv("/testcases/data/get_token.csv"))# data=read_testcase_yaml("/testcases/get_token.yml")# analysis_parameters(data)
conftest.py
@pytest.fixture(scope="session",autouse=True)
def clean_extract():clean_extract_file()
test_demo4.py
import randomimport pytestfrom pytestdemo.common.requests_util import RequestsUtil
from pytestdemo.common.yaml_util import write_extract_file, read_testcase_yamlclass Test4Api:access_token=""@pytest.mark.parametrize("data",read_testcase_yaml("/testcases/get_token.yml"))def test_get_token(self,data):RequestsUtil("base","base_wx_url").analysis_yml_send_reqeust(data)@pytest.mark.parametrize("data", read_testcase_yaml("/testcases/get_tags.yaml"))def test_get_tags(self,data):RequestsUtil("base", "base_wx_url").analysis_yml_send_reqeust(data)
get_token.yml
- name: $csv{name}parameters:data_file: /testcases/data/get_token.csvrequest:method: geturl: /cgi-bin/tokenparams:grant_type: $csv{grant_type}appid: $csv{appid}secret: $csv{secret}extract:access_token: '"access_token":"(.*?)"'validate:- equals: {status_code: 200}- contains: $csv{assert_str}
get_token.csv
name,grant_type,appid,secret,assert_str
"获取鉴权码","client_credential","wx6b11b3efd1cdc2901","106a9c6157c4db5f6029918738f9529d2","access_token"
"appid必填检验","client_credential","","106a9c6157c4db5f6029918738f9529d2","errcode"
get_tags.yaml
- name: 获取标签request:method: geturl: /cgi-bin/tags/get?access_token={{access_token}}validate:equals: {status_code: 200}
- name: 获取标签222request:method: geturl: /cgi-bin/tags/get?access_token={{access_token}}validate:equals: {status_code: 200}
相关文章:
接口框架项目实战-pytest(六)csv数据驱动
csv 数据驱动 为了解决数据量大 导致yaml文件重复太多 yaml_util.py import osimport jsonpath import yamlfrom pytestdemo.common.base_util import get_path from pytestdemo.common.csv_util import analysis_parametersdef read_config_file(one_node,two_node):with ope…...
【Apache Doris】周FAQ集锦:第 5 期
【Apache Doris】周FAQ集锦:第 5 期 SQL问题数据操作问题运维常见问题其它问题关于社区 欢迎查阅本周的 Apache Doris 社区 FAQ 栏目! 在这个栏目中,每周将筛选社区反馈的热门问题和话题,重点回答并进行深入探讨。旨在为广大用户和…...
再读高考作文题
新课标I卷:讨论了随着互联网和人工智能的普及,问题是否会变得越来越少,要求考生写一篇文章,表达自己对于这一现象的联想和思考。 从来就没有什么救世主 AI也不是 一直不会写作文,直到高中,才堪堪…...
小程序中实现自定义头部导航组件
在页面中实现自定义头部导航的组件,如果仅是单个页面中需要自定义可在页面的json文件中配置"navigationStyle": “custom”,如果是项目中所有页面都想使用自定义的组件,可在app.json的window中全局配置"navigationStyle"…...
算数运算符与表达式(打印被10整除的数)
打印100以内(包含100)能被10整除的正整数 #include <stdio.h>#define UPPER 100int main() {int i 1;while (i < UPPER)if (i % 10 0)printf("%d\n", i);return 0; } 自增运算符 i 用于递增变量 i 的值。在 while 循环中…...
kv视频如何转码mp4格式,kv转换mp4最简单方法
在数字化时代,视频格式转换成为了一项日常需求。有时候我们需要把kv格式转换为MP4格式。下面将详细介绍kv转MP4的方法 方法一、 1、使用 "小白兔视频格式在线转换网站" 2、地址发给"小白兔视频格式在线转换网站"的客服,客服下载即可…...
哈夫曼树详解
哈夫曼树 例题 有n堆果子,每堆果子的质量已知,现在需要把这些果子合并成一堆,但是每次只能把两堆果子合并到一起,同时会消耗与两堆果子质量之和等值的体力。显然,在进行n-1次合并之后,就只剩下一堆了。为…...
LangChain4j实战
基础 LangChain4j模型适配: Provider Native Image Sync Completion Streaming Completion Embedding Image Generation Scoring Function Calling OpenAI ✅ ✅ ✅ ✅ ✅ ✅ Azure OpenAI ✅ ✅ ✅ ✅ ✅ Hugging Face ✅ ✅ Amazon Bedrock ✅ ✅…...
57.Semaphore信号量
用来限制能同时访问共享资源的线程上限。只是适合限制单机线程数量。 Slf4j public class SemaphoreDemo {public static void main(String[] args) {Semaphore semaphore new Semaphore(3);for (int i 0; i < 10; i) {new Thread(() -> {try {semaphore.acquire();//…...
生成式人工智能 - 文本反转(Textual Inversion):一种微调稳定扩散模型的方法
一、简述 大型文本到图像稳定扩散模型已经展示了前所未有的能力,可以使用文本提示合成新场景。这些文本到图像模型提供了通过自然语言指导创作的自由。然而,它们的使用受到用户描述特定或独特场景、艺术创作或新实体产品的能力的限制。很多时候,用户被限制行使她的艺术自由来…...
minio的一个基础使用案例:用户头像上传
文章目录 一、minio下载安装(Windows)二、案例需求分析三、后端接口开发 一、minio下载安装(Windows) 1. 下载minio服务端和客户端 minio下载地址 2. 手动搭建目录 /minio/binmc.exeminio.exe/data/logs手动创建minio应用程序目…...
Linux用户和用户组的管理
目录 前言一、系统环境二、Linux用户组的管理2.1 新增用户组2.2 删除用户组2.3 修改用户组2.4 查看用户组 三、Linux用户的管理3.1 新增用户3.2 删除用户3.3 修改用户3.4 查看用户3.5 用户口令(密码)的管理 总结 前言 本篇文章介绍如何在Linux系统上实现…...
项目-五子棋双人对战:游戏房间的管理(5)
完整代码见: 邹锦辉个人所有代码: 测试仓库 - Gitee.com 之前我们已经实现了玩家匹配的功能, 我们都知道, 匹配完过后就可以进入游戏房间进行对战了, 所以我们下一步关注的重点就是对于游戏房间的管理. 模块详细讲解 功能需求 通过匹配的方式, 自动给玩家加入到一个游戏房间…...
LocalDate和Date有什么区别?两者如何转换?
LocalDate与Date 在Java中,LocalDate和Date是用来处理日期的两种不同的类。 区别: Date是Java早期的日期类,它包含了日期和时间的信息。但是在Java 8之后,Date类被标记为过时的,推荐使用新的日期时间API,…...
铝合金货物运输鉴定书办理 货物危险性鉴定
货物运输鉴定书/货物危险性鉴定 项目背景: 为了运输的安全,航空运输、公路运输、铁道运输、水路运输都必须了解货物的运输危险性。货物运输条件鉴定就是对货物的运输适宜性作出评价和建议。 货物运输条件鉴定一般依据IATA危险货物规章(DGR)2005、联合国危…...
php操作数据库
<?php session_start(); #面向过程 function create_connection(){ $conn mysqli_connect(127.0.0.1,root,123456,learn_2) or die("数据库连接失败"); mysqli_query($conn,"set names utf8"); return $conn; } #面向对象 function create_connection…...
python记录之集合
Python中的集合(Set)是一个无序且不包含重复元素的数据结构。集合主要用于成员检测和数据去重。 1. 集合的创建 在Python中,你可以使用大括号{}或set()函数来创建一个集合。注意,如果你使用大括号{}并且只包含一个元素ÿ…...
ResourceManager 的 rpc server 模型
一. yarn ResourceManager 的三种通信协议 ResourceTrackerProtocol NodeManager 和 ResourceManager 的 RPC 通信协议。其中 ResourceManager 充当RPC Server的角色,而 NodeManager 充当 RPC Client 的角色。NodeManager 通过该协议向 ResourceManager 注册、汇报…...
Java面试八股之什么是自动装箱和自动拆箱
什么是自动装箱和自动拆箱 在Java中,自动装箱(Autoboxing)和自动拆箱(Auto-unboxing)是两个与基本数据类型和它们对应的包装类之间的转换相关的特性。这两个概念自Java 5(也称为Java SE 5或JDK 5ÿ…...
OrangePi AIpro小试牛刀-目标检测(YoloV5s)
非常高兴参加本次香橙派AI Pro,香橙派联合华为昇腾打造的一款AI推理开发板评测活动,以前使用树莓派Raspberry Pi4B 8G版本,这次有幸使用国产嵌入式开发板。 一窥芳容 这款开发板搭载的芯片是和华为昇腾的Atlas 200I DK A2同款的处理器&#…...
QT案例 记录解决在管理员权限下QFrame控件获取拖拽到控件上的文件路径
参考知乎问答 Qt管理员权限如何支持拖放操作? 的回答和代码示例。 解决在管理员权限运行下,通过窗体的QFrame子控件获取到拖拽的内容。 目录标题 导读解决方案详解示例详细 【管理员权限】在QFrame控件中获取拖拽内容 【管理员权限】继承 IDropTarget 类…...
[HNCTF 2022 WEEK4]flower plus
第一种花指令 第二种花指令 根据两种花指令特征,写出去花指令脚本 saddr0x401000 eaddr0x435000 for i in range(saddr,eaddr):if get_wide_dword(i)0x01740275:print(hex(i),hex(get_wide_dword(i)))patch_byte(i-5,0x90)patch_dword(i-4,0x90909090)patch_dw…...
Mongo常用语法(java代码)
1、根据agentId字段分组,并对totalCustomerNum、refundCustomerNum字段 sum求和,同时取别名 Overridepublic List<AgentCountInfoBean> selectCurrentMonthNewResource(Set<String> orderTypeSet, List<String> agentIds,LocalDateTim…...
go语言后端开发学习(二)——基于七牛云实现的资源上传模块
前言 在之前的文章中我介绍过我们基于gin框架怎么实现本地上传图片和文本这类的文件资源(具体文章可以参考gin框架学习笔记(二) ——相关数据与文件的响应),但是在我们实际上的项目开发中一般却是不会使用本地上传资源的方式来上传的,因为文件的上传与读…...
探索微软新VLM Phi-3 Vision模型:详细分析与代码示例
引言 在最近的微软Build大会上,微软宣布了许多新内容,其中包括新款Copilot PC和围绕Copilot生态系统的一系列功能。其中最引人注目的是发布了一些新的Phi模型,特别是Phi-3 Vision模型。本文将详细探讨Phi-3 Vision模型的特性,并提…...
如何使用GPT-4o函数调用构建一个实时应用程序?
本教程介绍了如何使用OpenAI最新的LLM GPT-4o通过函数调用将实时数据引入LLM。 我们在LLM函数调用指南(详见https://thenewstack.io/a-comprehensive-guide-to-function-calling-in-llms/)中讨论了如何将实时数据引入聊天机器人和代理。现在,我们将通过将来自Fligh…...
[Vue-常见错误]浏览器显示Uncaught runtime errors
文章目录 错误描述正确写法具体如下 错误描述 当前端代码发生错误时,浏览器中出现以下错误提示。 正确写法 显然这不是我们所期望的,在vue.config.js中配置如下设置关闭Uncaught runtime errors显示 devServer: {client: {overlay: false}具体如下 …...
html常见的表单元素有哪些,html表单元素有哪些?
HTML中常用的表单元素包括:文本区域(TEXTAREA),列表框(SELECT),文本输入框(INPUT typetext),密码输入框(INPUT typepassword),单选输入框(INPUT typeradio),复选输入框(INPUT typecheckbox),重置…...
spring boot sso
代码:https://gitee.com/forgot940629/ssov2 授权服务 登录成功后,session中会存储UsernamePasswordAuthenticationToken,之后每次请求code时都会用UsernamePasswordAuthenticationToken生成OAuth2Authentication,并将OAuth2Aut…...
Keras深度学习框架实战(5):KerasNLP使用GPT2进行文本生成
1、KerasNLP与GPT2概述 KerasNLP的GPT2进行文本生成是一个基于深度学习的自然语言处理任务,它利用GPT-2模型来生成自然流畅的文本。以下是关于KerasNLP的GPT2进行文本生成的概述: GPT-2模型介绍: GPT-2(Generative Pre-trained …...
网站布局设计理由/牡丹江seo
这篇文章要介绍的内容是,使用urllib和Json库,通过post向浏览器发送数据,从而实现利用Python就可以使用爬虫网站的特定功能:我们这篇的实例是向《有道翻译》中发送数据,并自动给出翻译。如下图1所示: 图1首…...
懂的建设网站/企业网站排名优化方案
实验报告课程Java语言程序设计实验名称第八章 Swing图形用户界面程序设计实验任务(三)第页专业班级学号__ __ 姓名实验日期:2010 年11 月9 日报告退发(订正、重做)一、实验目的?布局管理器的使用二、实验环境1、微型计算机一台2、DOS或WINDOWS操作系统,…...
做网站基础教程/最好的网络营销软件
东莞数控机床上加工模具 编程时,应该遵守编程的工艺流程,否则极容易出现错误。首先需要分析图纸、编写 工艺卡等,接着需要编写模具的加工程序,然后将程序输入到数控机床,最后进行程序检 验和切试。 (1&am…...
网站创建过程/怎么申请网址
开头先理解一下所谓的“均衡” 不能狭义地理解为分配给所有实际服务器一样多的工作量,因为多台服务器的承载能力各不相同,这可能体现在硬件配置、网络带宽的差异,也可能因为某台服务器身兼多职,我们所说的“均衡”,也就…...
怎样把有用网站做图标放在桌面/软文推广营销平台
2019独角兽企业重金招聘Python工程师标准>>> 关于区块链是什么的话题,估计现在已经烂大街了。但是实际上, 那些我们认为已经非常普通的概念,却往往别有洞天。 1.从社会学角度上来讲: 区块链的概念来自凯文.凯利《失控》…...
制作网站软件都在什么公司/国内优秀个人网站欣赏
本章提出一种基于经验模态分解的血管内膜中层厚度测量的方法并,它涉及一种基于希尔伯特黄变换的图像特征提取方法。它解决了当前有些图像特征提取方法无法分离特征层以改善提取精度的问题。与之前的方法相比具有精度更高的优点。算法结构如下图所示: 给我…...