当前位置: 首页 >  网络应用 >  python实现基于RPC协议的接口自动化测试

python实现基于RPC协议的接口自动化测试

导读:01什么是RPC.RPC(Remote Procedure Call)远程过程调用协议.是一个用于建立适当框架的协议。从本质上讲,它使一台机器上的程序能够调用另一台机器上的子程序,而不会意识到它是远程的。.RPC 是一种软件通信协议,一个程序可以用来向位于网络上另一台计算机的程序

01什么是RPC

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

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

02RPC框架

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

01dubbo服务管理简单使用

先设置为中文,右侧选择语言

选择服务治理– >服务

点开MarketService,再点ip和端口,打开如下:

02实战接口说明

第1步里我们看到了两个接口,exchange和lottery,下面是这两个接口的业务说明

  • exchange

业务是积分兑换,该接口的参数是一个对象,对象类型对应后台java代码中的某个类cn.testfan.dubbo.model.ExchangeRequest,这个类对象对应的属性如下,这些属性其实就是我们的参数

  • lottery

业务是抽奖,参数有两个,都是数字,没有参数名称,按照顺序,第一个表示参与的活动id,第二个表示用户id

03python调用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,写上如下代码

执行测试

下面是一些配套的学习资源,希望能帮到大家 朋友们如果需要可以自行免费领取 【保证100%免费】

软件测试面试文档

我们进阶学习自动化测试—测试开发必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

面试文档获取方式:

这些都在我的软件测试学习交流群里:902061117****

内容
  • 产品代码都给你看了,可别再说不会DDD(一):DDD入门
    产品代码都给你看了,可别再说不会
    2023-12-03
    这是一个讲解DDD落地的文章系列,作者是《实现领域驱动设计》的译者滕云。本文章系列以一个真实的并已成功上线的软件项目——
  • 面试:靠着这篇笔记,我拿下了16k车载测试offer!
    面试:靠着这篇笔记,我拿下了16
    2023-12-05
    如何写简历.个人技能.个人技能一般不要超过10条,一般在8条内。.一、测试流程和技术.1、熟悉车载系统研发和测试流程,能
  • 颜值即正义,献礼就业季,打造多颜色多字体双飞翼布局技术简历模版(Resume)
    颜值即正义,献礼就业季,打造多颜
    2023-12-06
    一年好景君须记,最是橙黄橘绿时。金三银四,秣马厉兵,没有一个好看的简历模板怎么行?无论是网上随便下载还是花钱买,都是一律
  • 为什么使用消息队列?我这样回答,面试官直说讲得很清楚
    为什么使用消息队列?我这样回答,
    2023-12-01
    为什么要使用消息队列,六个字总结:解耦、异步、消峰.1)解耦.传统模式下系统间的耦合性太强。怎么说呢,举个例子:系统 A
  • 面对AI的兴起,从人类发展到个人发展,普通人应当如何抉择?
    面对AI的兴起,从人类发展到个人
    2023-12-08
    这一周被各种 AI 卷的不行,从 ChatGPT 4.0 上线到百度文心一言发布会,再到微软的 Microsoft 36
  • UE5 材质 雨滴shader
    UE5 材质 雨滴shader
    2023-12-07
    潮湿效果.物体表面是如何变湿的?.物体表面吸水使颜色变深.潮湿的颜色会变得暗淡且饱和.实现.增加饱和度且变暗.潮湿的物体