用Python搞定接口自动化测试:轻松实现RPC协议接口测试

news2024/12/29 14:26:58

每天进步一点点,关注我哦,每天分享测试技术文章,文末有福利!

目录:导读

前言

一、什么是RPC

二、RPC框架

三、基于grpc框架服务的接口测试

01创建一个grpc服务接口

02调用grpc接口客户端

03接口框架中适配grpc封装

四、基于dubbo框架服务的接口测试

01、dubbo服务管理简单使用

02、实战接口说明

03、python调用dubbo接口

04、接口框架中适配dubbo封装

结语


前言

当我们进行接口测试时,手动测试成本高且易错,因此自动化测试成为了提高效率和准确性的重要手段。而RPC协议在分布式系统中很常见,对其进行自动化测试能够更好地保障在各节点之间的通信质量。

今天我想和大家分享一下,我是如何用Python来实现自动化测试并轻松完成RPC协议接口测试的,让我们一起来看看!

一、什么是RPC

RPC(Remote Procedure Call)远程过程调用协议是一个用于建立适当框架的协议。从本质上讲,它使一台机器上的程序能够调用另一台机器上的子程序,而不会意识到它是远程的。

RPC 是一种软件通信协议,一个程序可以用来向位于网络上另一台计算机的程序请求服务,而不必了解网络的细节。RPC 被用来像本地系统一样调用远程系统上的其他进程。过程调用有时也被称为函数调用或子程序调用


二、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 重新实现了服务端


三、基于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目录执行下述命令

免费领取码同学软件测试课程笔记+超多学习资料+完整视频+面试题,可加微信:Matongxue_10

该目录下文件如下:

修改add_pb2_grpc.py中的导入如下:

根据上述代码封装接口调用,创建一个api_client.py,写上如下代码就是grpc提供的add接口的调用方法

(3)编写grpc接口测试用例

在testcases包下创建一个grpcapi包,创建一个test_grpc_api.py,编写针对add接口的测试用例如下:

执行测试


四、基于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自动化测试教程获取方式:留言【Python自动化测试】即可

如果你觉得文章还不错,请大家 点赞、分享、留言 下,因为这将是我持续输出更多优质文章的最强动力!

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

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

相关文章

nvm安装使用详解,附gnvm介绍

最近工作中,再次遇到了需要处理 Node.js 多版本管理的事情,由于在windows系统下开发,于是使用了 nvm 来做版本管理。 其实,之前在写文章介绍 进行node和npm的版本升级 的时候,也有提到 node 多版本管理工具&#xff0c…

史上最全Maven教程(五)

文章目录 🔥Maven聚合案例_搭建dao模块🔥Maven聚合案例_搭建service模块🔥Maven聚合案例_搭建web模块🔥Maven聚合案例_运行项目🔥依赖传递失效及解决方案 🔥Maven聚合案例_搭建dao模块 dao子工程中一般写实…

linux交叉编译环境搭建 gcc + openocd + stlink + cubeMX + cortex Debug

文章目录 运行环境:1.1 gcc1)下载并解压gcc2)环境配置 2.1 openocd1)下载并解压openocd2)环境配置(没有权限就加sudo) 3.1 stlink1)下载并双击安装stlink 4.1 cubeMX1)下载并解压cubeMX2)生成makefile工程 5.1 cortex Debug1)setting设置2)la…

国家信息安全水平考试中NISP二级网络安全证书介绍

国家信息安全水平考试中NISP二级网络安全证书介绍 1、什么是NISP? 国家信息安全水平考试(National Information Security Test Program,简称NISP),是由中国信息安全测评中心实施培养国家网络空间安全人才的项目。 2、考取NISP…

电信运营商网络运维方案

随着新一代信息技术加快普及应用,5G、云和人工智能正加速智能社会的到来,三大技术正在重构网络。随着我国5G产业快速推进,中国移动、中国联通、中国电信加快步伐,全业务运营时代已经到来。全业务运营时代的特点是:网络…

ros2 foxy创建一个包和节点-ubuntu20.04

文章目录 创建工作区目录创建包和节点colcon build编译CMakeLists.txt文件find_packageadd_executable package.xml面相过程的方式生命一个节点以面向对象的方式创建一个节点 创建工作区目录 mkdir -p ~/ros2_ws/src cd ~/ros2_ws我们创建了两个目录,ros2_ws和在他…

echarts实用经验:tooltip悬浮框添加button按钮;toolbox添加自定义按钮;显示隐藏切换导致图表太小渲染不及时的解决办法

一、tooltip悬浮框添加点击事件 这里我配置的是在柱状图中,echarts配置项文档 注意: 1、tooltip,默认是鼠标移动时触发(‘mousemove’)。这种情况下,是无法点击到悬浮框的,更别说点击框内的按钮…

从0到1:拍卖小程序开发的实践经验分享

在当今智能手机普及的时代,拍卖小程序开发正成为越来越多企业的选择。本文将分享在开发拍卖小程序过程中的实践经验。 拍卖小程序开发的重要性 随着移动互联网的发展,拍卖小程序的需求越来越大。开发一个拍卖小程序可以带来多种好处,包括提…

openQA----openQA的架构

【原文链接】openQA----openQA的架构 openQA简介 openQA是一款用于完整的操作系统安装测试的测试工具,它通过创建虚拟机的方式执行测试过程并在每一个测试步骤中检查控制台回显和屏幕结果,并可以通过按键或者命令进入下一个步骤。openQA可以检查操作系…

Windows Java JavaFX IntelliJ IDEA 开发环境搭建 创建工程 编译运行 打包分发 自定义运行时

博文目录 文章目录 本文说明JavaFX 简单说明JavaFX 版本说明JavaFX 与 JDK 的关系JavaFX 与 JDK Modular (JDK 9 模块化系统)JavaFX 模块说明 (JavaFX 20)JavaFX Scene Builder创建 JavaFX 应用程序的两种选择 环境搭建版本选择IntelliJ Idea 安装配置Modular JavaFX Project …

图像质量评价指标FID、LPIPS、NIQE及其代码

文章目录 FIDLPIPSNIQE FID FID的全称是Frchet Inception Distance,用于衡量两个多元正态分布的距离,数值越小越好。具体的,FID使用Inception Net-V3全连接前的2048维向量作为图片的特征向量,再计算两张图像特征之间的距离。 F I…

医疗行业数据库老牌厂商 InterSystems 的新实践

作者 | 宋慧 出品 | CSDN 云计算 数据赛道火爆,呈现了爆发式增长,CSDN 的《新程序员》杂志曾做过主题为“新数据库时代”的系列专题报道,而且从 Gartner2022 年魔力象限也能看到,仍然有众多厂商汇集在云数据库这个领域的象限中。…

使用脚手架新建Vue项目

1.安装阿里云镜像仓库 npm config get registry 然后我们进行安装vue的客户端,npm install -g vue/cli 然后我们可以进行查看版本输入vue --version 然后我们到目录下面新建一个vue项目 vue create 项目名称(选择的时候选择Vue2版本) 这是第…

C++文件读写类介绍

一、现有的文件读写方案 方案一:采用C标准库读写 该库拥有输入输出模板类及两个标准实例化集:一个是用于操作char类型元素的实例化集(即常用的cin,cout等),另一个用于操作wchar_t类型元素的实例化集。 模板类以basic_作为前缀&…

CentOS----本地YUM源配置

1.cd /etc/yum.repos.d 2. cp -p CentOS-Media.repo M.repo mkdir yuan mv CentOS-* yuan 3. vi M.repo (修改配置文件内容如下,/mnt/cdrom 为yum源目录) 4.创建挂载目录 和 上面配置文件中file:///mnt/cdrom 一致 mkdir -p /mnt/cdrom 5.将本地yum 挂载到刚创建的文件…

【思考】聊聊低代码的实践之路

文章目录 背景一、最初的疑惑二、简单聊聊原理三、组织内实践案例四、实践带来的反思五、最后聊几句问题 背景 这个概念由来已久,但是在国内兴起,是最近几年; 低代码即Low-Code; 指提供可视化开发环境,可以用来创建和…

(一)Kubernetes - 介绍

Kubernetes介绍 1. 介绍1.1 什么是Kubernetes1.2 K8s主要功能1.3 K8s架构1.4 K8S核心概念1.5 完整流程 2. K8S安装方式选择2.1 kubeadm2.2 手动部署(二进制)2.3 Rancher2.4 kubespray 3. 思维导图 1. 介绍 1.1 什么是Kubernetes ​ Kubernetes是Google公司在2014年6月开源的一…

根据cadence设计图学习硬件知识day06 了解一些电源转化芯片和 稳压器 和 开关芯片

1. TPL920 (高精度线性稳压器) 1.1.TPL920 介绍 TPL920系列产品是2A大电流、6μVRMS低噪声、高PSRR、高精度线性稳压器,通常具有在2A负载条件下的110 mV超低电压降。这TPL920系列产品同时支持固定输出电压范围从0.8伏到3.95伏,输出电压可调范围为0.8V至…

d2l BERT预训练(model+dataset*+train)

千呼万唤始出来,终于来到了bert。本篇博客先介绍预训练部分,dataset部分只介绍简洁输入输出,详细的另行更新新的blog。 目录 1.model 1.1bert总述 1.2输入表示 1.3Encoder 1.3.1验证输出 1.4掩敝语言模型mlm 1.4.1forward探索 Layer…

有什么台灯性价比高又实惠的品牌?护眼台灯性价比高的led大灯

不管你处在学生被动学习还是上班后主动学习的阶段,为自己挑选一款合适的台灯非常重要,因为夜晚的氛围能达到很高的学习效率,而台灯可以保证我们有一个舒适的阅读感受。那在为学习需求挑选台灯时,不应该以平价作为选购标准&#xf…