python实现基于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
python实现基于RPC协议的接口自动化测试的更多相关文章
- python测试基于websocket协议的即时通讯接口
随着html5的广泛应用,基于websocket协议的即时通讯有了越来越多的使用场景,本文使用python中的websocket-client模块来做相关的接口测试 import webclient ...
- RobotFrameWork环境搭建(基于HTTP协议的接口自动化)
1. 前言 接着上一篇<RobotFramework框架系统课程介绍>,本篇主要介绍一下在基于RobotFramework框架开展接口自动化前,前期的环境如何搭建,正所谓”工欲善其事,必先 ...
- python中基于tcp协议的通信(数据传输)
tcp协议:流式协议(以数据流的形式通信传输).安全协议(收发信息都需收到确认信息才能完成收发,是一种双向通道的通信) tcp协议在OSI七层协议中属于传输层,它上承用户层的数据收发,下启网络层.数据 ...
- 基于Robot Framework的接口自动化测试
Robot Framework框架简介 Robot Framework框架是一个通用的验收测试和验收测试驱动开发的自动化测试框架(ATDD),使用的是关键字驱动的测试方法.它本身拥有强大的标准库,此外 ...
- python开发基于SMTP协议的邮件代发服务
写在这篇文章前照例给大家灌输点名词解释,理论知识,当然已经很熟悉的同学可以往下翻直接看干货 1. 什么是SMTP SMTP即简单传输协议(Simple Mail Transfer Protocol), ...
- 使用Jayrock开源组件开发基于JSON-RPC协议的接口
最近接手一个以前的项目,无意间发现此项目开发接口的组件:Jayrock(接口组件估计用的少,用的最多的估计是这个Jayrock.json.dll,用于解析json) 以下是Jayrock的介绍官网: ...
- 使用Python实现基于图像识别的iOS自动化测试
相对于Android来说,iOS比较封闭.这一点,在设计和评估自动化测试方案的时候感觉尤其强烈.iOS平台上没有特别好用的自动化测试工具.苹果针对iOS提供了UI Automation的Instrum ...
- python实现基于百度路径规划接口的坐标对获取两点驾车距离的计算
今天为大家介绍一种通过python实现坐标对间距离数据的获取方法.接口采用百度开发的路径规划接口. 1.调用接口: 接口:(传入起点坐标串,结束坐标串:ak值需要注册百度开发者) 接口详细说明 htt ...
- Python+Excel+Unittest+HTMLTestRunner实现数据驱动接口自动化测试(二)
因为小白,这2天研究了好久才算是搞好.先附上一个测试完成后邮件的截图: 上一篇有提到: unittest中实际运行了一个接口的很多条用例,而报告中只会有一条记录.这是因为unittest test c ...
- Python+Excel+Unittest+HTMLTestRunner实现数据驱动接口自动化测试(一)
整个流程: 使用HTMLTestRunner的Run方法执行用例,用例调用Excel读取方法,将测试数据导入到unittest用例中执行,测试结果返回给HTMLTestRunner. 因为刚接触接口自 ...
随机推荐
- 使用Typora编写后的md文件优雅的上传到博客(插件dotnet-cnblog的使用)
一.Typora的设置 如下图,设置图片上传位置 之后文章上的图片都会临时存放到文件同级目录下的xxx.Asster文件夹下面. 二.下载插件dotnet-cnblog 1.安装.Net Core S ...
- .NET 高效开发Nuget管理工具(开源)
我们.NET开发会引用很多外部Nuget包,多项目.多个解决方案.甚至多个仓库. 简单的Nuget包管理,通过VS就能比较简单处理好.但复杂的场景呢,比如: 1.一个仓库里,有多个解决方案的Nuget ...
- 获取微信小程序页面路径
2024/07/12 1.步骤 2.注意事项 3.参考 1.步骤 微信公众号关联小程序时需要用到小程序的页面路径,获取步骤如下:' 登录微信公众平台--工具--生成小程序码--获取更多页面路径--填写 ...
- MAC地址格式详解
以太网编址 在数据链路层,数据帧通常依赖于MAC地址来进行数据交换,它如同公网IP地址一样要求具有全球唯一性,这样才可以识别每一台主机.那么MAC地址如何做到这点?它的格式又是什么? MAC地址,英文 ...
- Element-UI 中使用rules验证 金额 数字
data中定义验证规则:var checkCount = function (rule, val, callback) { if (!val) { return callback(new Error( ...
- SQLserver 数据库自定义函数
起源 最近项目开发上使用的SQLserver数据库是2008版本,由于08版本的数据是没有字符串合并(STRING_AGG)这个函数(2017版本及以上支持)的,只有用stuff +for xml p ...
- 使用FastAPI来开发项目,项目的目录结构如何规划的一些参考和基类封装的一些处理
使用FastAPI开发项目时,良好的目录结构可以帮助你更好地组织代码,提高可维护性和扩展性.同样,对基类的封装,也可以进一步减少开发代码,提供便利,并减少出错的几率. 下面是一个推荐的目录结构示例: ...
- Scikit-learn从入门到放弃
目录 Scikit-learn简介 SVM分类 随机森林回归 K-means聚类 前置建议阅读: 1.NumPy从入门到放弃 2.Pandas从入门到放弃 3.SciPy从入门到放弃 Scikit-l ...
- 深度学习环境安装-conda-torch-Jupyter Notebook
conda的安装 为什么要安装这个,它是什么? 它是一个管理环境的,当我们跑项目的时候,往往这些项目所需要的pickets库和环境是不同的,这时候如果自己的电脑里面只有一个版本的库的话,就运行不了,比 ...
- dotnet 学习 CPF 框架笔记 了解 X11 里如何获取触摸信息
本文记录我学习 CPF 框架的笔记,本文记录我阅读 CPF 框架,学习到了如何在 dotnet C# 里面获取到 X11 的触摸信息,获取到多指触摸以及触摸点的面积和触摸点压感等信息的方法 开始之前, ...