python实现基于RPC协议的接口自动化测试
01 什么是RPC
RPC(Remote Procedure Call)远程过程调用协议是一个用于建立适当框架的协议。从本质上讲,它使一台机器上的程序能够调用另一台机器上的子程序,而不会意识到它是远程的。
RPC 是一种软件通信协议,一个程序可以用来向位于网络上另一台计算机的程序请求服务,而不必了解网络的细节。RPC 被用来像本地系统一样调用远程系统上的其他进程。过程调用有时也被称为函数调用或子程序调用
02 RPC框架
RPC本身是一套协议规范,遵循这一套规范实现的框架比较流行的有以下几个:
-
grpc框架
gRPC是由 google开发的一个高性能、通用的开源RPC框架,主要面向移动应用开发且基于HTTP/2协议标准而设计,同时支持大多数流行的编程语言。gRPC基于 HTTP/2协议传输
-
dubbo框架
Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和Spring框架无缝集成。
Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:
① 面向接口的远程方法调用
② 智能容错和负载均衡
③ 服务自动注册和发现
-
thrift框架
Thrift是一种接口描述语言和二进制通讯协议。原由Facebook于2007年开发,2008年正式提交Apache基金会托管,成为Apache下的开源项目。
Thrift是一个RPC通讯框架,采用自定义的二进制通讯协议设计。相比于传统的HTTP协议,效率更高,传输占用带宽更小。另外,Thrift是跨语言的
-
Hetty 框架
Hetty 是一款构建于 Netty 和 Hessian 基础上的高性能的 RPC 框架
Hessian 是一款基于 HTTP 协议的 RPC 框架,采用的是二进制 RPC 协议,非常轻量级 ,且速度较快。
Netty 是一款基于事件驱动的 NIO 框架,用以快速开发高性能、高可靠性的网络服务器和客户端程序。Hetty 客户端完全由 Hessian 实现,只是使用 Netty 重新实现了服务端
03 基于grpc框架服务的接口测试
01 创建一个grpc服务接口
注意在公司里你们的grpc服务可能并不是采用python去实现的,课上咱们为了测试grpc的接口,使用python先创建grpc的服务接口。
-
安装依赖库
-
创建grpc接口协议文档
在项目下创建一个grpc_study包,包下创建一个add.proto文件,将下述内容复制进去
-
生成服务代码
终端下进入proto文件所在目录,执行下述命令:
-
创建服务端
02 调用grpc接口客户端
以下代码就是调用第一步中的grpc接口的
03 接口框架中适配grpc封装
1、封装底层channel初始化
在config目录下创建grpc.yml,其中写上grpc接口的地址:
在common目录下的client中增加下述代码:
在conftes.py中增加下述代码:
2、封装grpc接口调用
在api包下创建一个grpcapi的包,将grpc的定义proto文件拷贝进去,然后在终端下进入grpcapi目录执行下述命令
该目录下文件如下:
修改add_pb2_grpc.py中的导入如下:
根据上述代码封装接口调用,创建一个api_client.py,写上如下代码就是grpc提供的add接口的调用方法
3、编写grpc接口测试用例
在testcases包下创建一个grpcapi包,创建一个test_grpc_api.py,编写针对add接口的测试用例如下:
执行测试
04 基于dubbo框架服务的接口测试
dubbo服务管理地址:
http://**.***.**.***:****/dubbo-admin-2.6.0
用户名和密码都是root
01 dubbo服务管理简单使用
先设置为中文,右侧选择语言
选择服务治理-->服务
点开MarketService,再点ip和端口,打开如下:
02 实战接口说明
第1步里我们看到了两个接口,exchange和lottery,下面是这两个接口的业务说明
-
exchange
业务是积分兑换,该接口的参数是一个对象,对象类型对应后台java代码中的某个类cn.testfan.dubbo.model.ExchangeRequest,这个类对象对应的属性如下,这些属性其实就是我们的参数
-
lottery
业务是抽奖,参数有两个,都是数字,没有参数名称,按照顺序,第一个表示参与的活动id,第二个表示用户id
03 python调用dubbo接口
-
安装第三方库
-
dubbo接口调用
04 接口框架中适配dubbo封装
1、封装底层dubbo初始化
在config目录下创建dubbo.yml文件,写上如下内容
在client.py里增加下述代码
2、封装api层
dubbo接口通常是按照服务进行划分,一个服务下有多个接口,针对该服务创建对象,然后调用各个接口。
在api包下创建dubboapi的包,针对market服务创建一个market_api.py文件,写上如下代码:
3、测试用例层
在testcases包下创建dubboapi包,在其下创建test_market_service.py,写上如下代码
执行测试
相关文章:

python实现基于RPC协议的接口自动化测试
01 什么是RPC RPC(Remote Procedure Call)远程过程调用协议是一个用于建立适当框架的协议。从本质上讲,它使一台机器上的程序能够调用另一台机器上的子程序,而不会意识到它是远程的。 RPC 是一种软件通信协议,一个程…...

如何使用PSQL Tool还原pg数据库(sql格式)
新建一个数据库用来还原;选择新建的数据库,右键选择【PSQL Tool】,打开PSQL Tool命令行界面;赋予pg库对sql文件的执行权限,否则会报“Permission denied”的错误,命令如下: chmod urwx D://NoS…...

uni-app商品搜索页面
目录 一:功能概述 二:功能实现 一:功能概述 商品搜索页面,可以根据商品品牌,商品分类,商品价格等信息实现商品搜索和列表展示。 二:功能实现 1:商品搜索数据 <view class="search-map padding-main bg-base"> <view class…...

【深度学习】零基础介绍循环神经网络(RNN)
RNN介绍 零基础介绍语言处理技术基本介绍分词算法词法分析工具文本分类与聚类情感分析 自然语言处理词向量词向量学习模型1. 神经网络语言模型2. CBOW 和 skip-gram3. 层次化softmax方法4. 负采样方法 RNN介绍RNN的变种:LSTM1. Forget Gate2. Input Gate3. Update M…...

青少年编程与数学 02-004 Go语言Web编程 13课题、模板引擎
青少年编程与数学 02-004 Go语言Web编程 13课题、模板引擎 一、模板引擎模板引擎的主要特点包括:模板引擎的应用场景:Go语言中的模板引擎:示例:使用Go的html/template包 二、工作流程1. 创建模板文件2. 准备数据3. 加载模板4. 渲染…...

如何优雅的关闭GoWeb服务器
以下内容均为Let’s Go Further内容节选以及作者本人理解。 这里创建了一个后台进程用于捕获关闭信号,在后台进程中,主要内容为: 创建一个缓冲通道 quit使用signal.Notify函数监听并捕获关机信号SIGINT,SIGTERM,在捕获关机信号后…...

AI程序员,开源的Devin,OpenHands 如何使用HuggingFace Inference API
我用了一下,界面这样子: Github:https://github.com/All-Hands-AI/OpenHands OpenHands 如何使用HuggingFace Inference API huggingface/meta-llama/Llama-3.3-70B-Instruct 而不是 meta-llama/Llama-3.3-70B-Instruct 不要设置base URL&…...

【动手学运动规划】 5.2 数值优化基础:梯度下降法,牛顿法
朕四季常服, 不过八套. — 大明王朝1566 道长 🏰代码及环境配置:请参考 环境配置和代码运行! 上一节我们介绍了数值优化的基本概念, 让大家对最优化问题有了基本的理解. 那么对于一个具体的问题, 我们应该如何求解呢? 这一节我们将介绍几个基本的求解…...

电子应用设计方案66:智能打印机系统设计
智能打印机系统设计 一、引言 随着科技的不断发展,打印机也在向智能化方向演进。智能打印机不仅能够提供高质量的打印服务,还具备便捷的操作、智能的管理和连接功能。 二、系统概述 1. 系统目标 - 实现高效、高质量的打印输出。 - 支持多种连接方式&am…...

iClient3D for Cesium 实现限高分析
作者:gaogy 1、背景 随着地理信息技术的发展,三维地球技术逐渐成为了许多领域中的核心工具,尤其是在城市规划、环境监测、航空航天以及军事领域。三维地图和场景的应用正在帮助人们更加直观地理解空间数据,提供更高效的决策支持。…...

AI开发:使用支持向量机(SVM)进行文本情感分析训练 - Python
支持向量机是AI开发中最常见的一种算法。之前我们已经一起初步了解了它的概念和应用,今天我们用它来进行一次文本情感分析训练。 一、概念温习 支持向量机(SVM)是一种监督学习算法,广泛用于分类和回归问题。 它的核心思想是通过…...

torch.unsqueeze:灵活调整张量维度的利器
在深度学习框架PyTorch中,张量(Tensor)是最基本的数据结构,它类似于NumPy中的数组,但可以在GPU上运行。在日常的深度学习编程中,我们经常需要调整张量的维度以适应不同的操作和层。torch.unsqueeze函数就是…...

【WRF教程第3.1期】预处理系统 WPS 详解:以4.5版本为例
预处理系统 WPS 详解:以4.5版本为例 每个 WPS 程序的功能程序1:geogrid程序2:ungrib程序3:metgrid WPS运行(Running the WPS)步骤1:Define model domains with geogrid步骤2:Extract…...

SD ComfyUI工作流 根据图像生成线稿草图
文章目录 线稿草图生成SD模型Node节点工作流程工作流下载效果展示线稿草图生成 该工作流的设计目标是将输入的图像转换为高质量的线稿风格输出。其主要流程基于 Stable Diffusion 技术,结合文本和图像条件,精确生成符合预期的线条艺术图像。工作流的核心是通过模型的条件设置…...

挑战一个月基本掌握C++(第六天)了解函数,数字,数组,字符串
一 C函数 函数是一组一起执行一个任务的语句。每个 C 程序都至少有一个函数,即主函数 main() ,所有简单的程序都可以定义其他额外的函数。 您可以把代码划分到不同的函数中。如何划分代码到不同的函数中是由您来决定的,但在逻辑上ÿ…...

git中的多人协作
目录 1.1多人协作1.1.1创建仓库1.1.2协作处理1.1.3冲突处理 1.2分支推送协作1.3分支拉取协作1.4远程分支的删除 1.1多人协作 1.1.1创建仓库 新建两个文件夹,不需要初始化为git仓库,直接克隆远程仓库命名testGit1,testGit2 指定本地仓库级别…...

解决新安装CentOS 7系统mirrorlist.centos.org can‘t resolve问题
原因 mirrorlist.centos.org yum源用不了 解决办法就是 # cd /etc/yum.repos.d/ # mv CentOS-Base.repo CentOS-Base.repo_bak # vim CentOS-Base.repoCentOS系统操作 # mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/*.repo_bak # curl -o /etc/yum.repos.d/CentOS-Linux-Ba…...

RK3588 , mpp硬编码yuv, 保存MP4视频文件.
RK3588 , mpp硬编码yuv, 保存MP4视频文件. ⚡️ 传送 ➡️ Ubuntu x64 架构, 交叉编译aarch64 FFmpeg mppRK3588, FFmpeg 拉流 RTSP, mpp 硬解码转RGBRk3588 FFmpeg 拉流 RTSP, 硬解码转RGBRK3588 , mpp硬编码yuv, 保存MP4视频文件....

Elasticsearch:什么是查询语言?
查询语言定义 查询语言包括数据库查询语言 (database query language - DQL),是一种用于查询和从数据库检索信息的专用计算机语言。它充当用户和数据库之间的接口,使用户能够管理来自数据库管理系统 (database management system - DBMS) 的数据。 最广…...

均值聚类算法
K-均值聚类算法是一种常用的无监督学习算法,用于将数据集划分为 K 个簇。它基于以下的思想:通过计算数据点与各个簇中心之间的距离来确定数据点所属的簇,并更新簇中心来最小化簇内数据点的平方误差。K-均值算法的步骤如下: 1. 选…...

MySQL 中快速插入大量数据
在 MySQL 中快速插入大量数据(例如 20 万条记录)可以通过多种方法实现。以下是一些优化技巧和步骤,可以帮助你高效地插入大量数据: 1. 禁用索引和约束(如果可能) 在插入大量数据之前,禁用索引和…...

腾讯云智能结构化OCR:以多模态大模型技术为核心,推动跨行业高效精准的文档处理与数据提取新时代
🎼个人主页:【Y小夜】 😎作者简介:一位双非学校的大三学生,编程爱好者, 专注于基础和实战分享,欢迎私信咨询! 🎆入门专栏:🎇【MySQL࿰…...

最大似然检测在通信解调中的应用
最大似然检测(Maximum Likelihood Detection,MLD),也称为最大似然序列估计(Maximum Likelihood Sequence Estimation,MLSE),是一种在通信系统中广泛应用的解调方法。其核心思想是在给…...

SKETCHPAD——允许语言模型生成中间草图,在几何、函数、图算法和游戏策略等所有数学任务中持续提高基础模型的性能
概述 论文地址:https://arxiv.org/pdf/2406.09403 素描是一种应用广泛的有效工具,包括产生创意和解决问题。由于素描能直接传达无法用语言表达的视觉和空间信息,因此从古代岩画到现代建筑图纸,素描在世界各地被用于各种用途。儿童…...

[JAVA备忘录] Lambda 表达式简单介绍
目录 前言 函数式接口 Lambda 表达式使用实例 简单示例 1. 无参数,无返回值 2. 有参数,无返回值 3. 无参数,有返回值 4. 有参数,有返回值 解释: 集合框架 1.forEach:遍历集合 2.排序࿱…...

[python]使用flask-caching缓存数据
简介 Flask-Caching 是 Flask 的一个扩展,为任何 Flask 应用程序添加了对各种后端的缓存支持。它基于 cachelib 运行,并通过统一的 API 支持 werkzeug 的所有原始缓存后端。开发者还可以通过继承 flask_caching.backends.base.BaseCache 类来开发自己的…...

裸机按键输入实验
一、硬件原理分析 按键就两个状态:按下或弹起,将按键连接到一个 IO 上,通过读取这个 IO 的值就知道按 键是按下的还是弹起的。至于按键按下的时候是高电平还是低电平要根据实际电路来判断。前 面几章我们都是讲解 I.MX6U 的 GPIO 作为输出使用…...

GaussDB运维管理工具(二)
GaussDB运维管理工具(二) 集群管理组件cm_ctl工具介绍cm_ctl工具使用查询集群状态启停集群主备切换重建备DN检测进程运行查看实例配置文件手动剔除故障CNCM参数获取和配置停止仲裁 Cluster Manager(缩写为CM)是GaussDB的集群管理工…...

【HarmonyOS之旅】HarmonyOS开发基础知识(一)
目录 1 -> 应用基础知识 1.1 -> 用户应用程序 1.2 -> 用户应用程序包结构 1.3 -> Ability 1.4 -> 库文件 1.5 -> 资源文件 1.6 -> 配置文件 1.7 -> pack.info 1.8 -> HAR 2 -> 配置文件简介 2.1 -> 配置文件的组成 3 -> 配置文…...

Mysql数据究竟是如何存储的
Mysql行列式 开篇 笔者这几日在学习mysql是这么运行的这本书,感觉书中的内容受益匪浅,想整理成自己的话分享给大家,平时大家工作和生活中可能没有时间去专心投入读取一本书,而mysql是这么运行的这本书需要投入大量的时间的学…...