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. 选…...
解锁数据库简洁之道:FastAPI与SQLModel实战指南
在构建现代Web应用程序时,与数据库的交互无疑是核心环节。虽然传统的数据库操作方式(如直接编写SQL语句与psycopg2交互)赋予了我们精细的控制权,但在面对日益复杂的业务逻辑和快速迭代的需求时,这种方式的开发效率和可…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...

让AI看见世界:MCP协议与服务器的工作原理
让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...

在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

有限自动机到正规文法转换器v1.0
1 项目简介 这是一个功能强大的有限自动机(Finite Automaton, FA)到正规文法(Regular Grammar)转换器,它配备了一个直观且完整的图形用户界面,使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...

html-<abbr> 缩写或首字母缩略词
定义与作用 <abbr> 标签用于表示缩写或首字母缩略词,它可以帮助用户更好地理解缩写的含义,尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时,会显示一个提示框。 示例&#x…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

免费数学几何作图web平台
光锐软件免费数学工具,maths,数学制图,数学作图,几何作图,几何,AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...