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

news/2024/12/2 18:06:55/

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

目录:导读

前言

一、什么是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.ppmy.cn/news/53130.html

相关文章

Java如何生成随机数?要不要了解一下

目录 前言一、Random类介绍二、Random类生成随机数1.生成随机数2.nextInt()方法 三、使用场景四、官方提示总结 前言 我们在学习 Java 基础时就知道可以生成随机数,可以为我们枯燥的学习增加那么一丢丢的乐趣。本文就来介绍 Java 随机数。 一、Random类介绍 在 Ja…

生成式AI火爆全球,你是否已经做好了准备?

2023年,随着ChatGPT的火爆全球,生成式AI也引发了各界人士的广泛关注。一时间,从国际科技巨头到国内人工智能企业,几乎所有我们耳熟能详的科技公司,都纷纷杀入了生成式AI市场。 作为全球云计算技术的开创者和领导者&…

Unity-ML-Agents-Example Learning Environments-环境解析

文档地址:https://github.com/Unity-Technologies/ml-agents/blob/release_19/docs/Learning-Environment-Examples.md 目录 1.Push Block 1.1 Behavior Parameters 1.1.1 为什么是70个变量,为什么是14条射线? 1.1.2 Float Properties 是…

推荐 7 个超牛的 Spring Cloud 实战项目

个 把一个大型的单个应用程序和服务拆分为数个甚至数十个的支持微服务,这就是微服务架构的架构概念,通过将功能分解到各个离散的服务中以实现对解决方案的解耦。 关于微服务相关的学习资料不多,而 GitHub 上的开源项目可以作为你微服务之旅…

python 从外部直接传递参数 调用某个函数 打印一下外部参数

为了从外部传递参数给 Python 程序,并调用一个特定的函数,我们可以使用 Python 的内置库 argparse。在这个例子中,我们将创建一个名为 example.py 的 Python 文件,该文件包含一个名为 print_args 的函数,该函数将接收并…

基于springboot的前后端分离的案列(一)

SpringBootWeb案例 前面我们已经讲解了Web前端开发的基础知识,也讲解了Web后端开发的基础(HTTP协议、请求响应),并且也讲解了数据库MySQL,以及通过Mybatis框架如何来完成数据库的基本操作。 那接下来,我们就通过一个案例&#xf…

linux系统中利用QT实现串口通信的方法

大家好,今天主要和大家分享一下,如何使用QT中的串口通信方法。 目录 第一:资源简介 第二:应用实例的具体实现 第三:程序运行效果 第一:资源简介 在开发板的资源中出厂系统中,默认已经配置了两…

Microsoft Sensitive Label部署方案

目录 前言 一、目标 二、建立完整的Azure信息保护环境 三、部署Microsoft Sensitive Label 3.1 执行缺省配置</