重庆做网站设计,电子商务网站建设ppt,做网站的出路,WordPress记录访问者ipgRPC 是一个高性能、通用的开源RPC框架#xff0c;其由 Google 主要面向移动应用开发并基于HTTP/2 协议标准而设计#xff0c;基于 ProtoBuf(Protocol Buffers) 序列化协议开发#xff0c;且支持众多开发语言。
自gRPC推出以来#xff0c;已经广泛应用于各种服务之中。在测…gRPC 是一个高性能、通用的开源RPC框架其由 Google 主要面向移动应用开发并基于HTTP/2 协议标准而设计基于 ProtoBuf(Protocol Buffers) 序列化协议开发且支持众多开发语言。
自gRPC推出以来已经广泛应用于各种服务之中。在测试中我们也越来越多地遇到gRPC接口相关的测试内容。测试一个gRPC接口我们往往需要一个测试用的客户端本文就为大家介绍如何用python来实现一个简易的gRPC客户端程序。
一、前期准备 gRPC 默认使用 protocol buffers这是 Google 开源的一套成熟的结构数据序列化机制。在开始编写客户端之前我们首先要安装一些必要的模块和工具。
pip install grpcio
pip install grpcio-tools
安装好了必要的模块和工具编译器之后我们就可以根据proto协议文件生成所需的模块和方法。比如我们要测试的接口协议文档为helloword.proto文档内容为
// helloworld.proto
syntax proto3;service Greeter {rpc SayHello(HelloRequest) returns (HelloReply) {}
}
message HelloRequest {string name 1;
}message HelloReply {string message 1;
}
就可以执行以下命令来快速获取
python -m grpc_tools.protoc --python_out. --grpc_python_out. -I. helloworld.proto生成的模块、方法会保存在两个文件之中分别为helloworld_pb2.py、helloworld_pb2_grpc.py。这两个文件是实现客户端时不可缺少的。
二、客户端实现 在前期准备完成之后实现一个客户端并非难事我们只需将自动生成的文件和模块引用进来就可以调用一些内置方法来完成与gRPC接口的交互。
比如上面生成的文件是helloworld_pb2.py、helloworld_pb2_grpc.py我们就在客户端引入这两个模块
import helloworld_pb2
import helloworld_pb2_grpc
同时再引入必要的grpc模块
import grpc接下来就是调用模块中的方法来进行grpc接口的连接、测试了。如果服务端起在本地的50051端口完整实现的代码如下
import helloworld_pb2
import helloworld_pb2_grpc
import grpcdef run():# 连接 rpc 服务器channel grpc.insecure_channel(localhost:50051)# 调用 rpc 服务stub helloworld_pb2_grpc.GreeterStub(channel)response stub.SayHello(helloworld_pb2.HelloRequest(nametest))print(Greeter client received: response.message)if __name__ __main__:run()
其中关键的步骤为
1、连接rpc服务器2、对service获取一个stub用于调用接口3、发送数据、接收数据。
将代码保存为client.py运行脚本就可以成功获取服务端返回的结果了假设服务端返回的文本为Hello
# python client.py
# Greeter client received: Hello
到这里一次简单的gRPC接口连接、交互就算完成了并实现了一个简易的gRPC客户端。
现在我也找了很多测试的朋友做了一个分享技术的交流群共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源没人解答问题坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化性能安全测试开发等等方面有一定建树的技术大牛
分享他们的经验还会分享很多直播讲座和技术沙龙
可以免费学习划重点开源的
qq群号822269834【暗号csdn999】 三、实际应用 在知音平台项目中官网控制台需要获取某个用户对于某种服务的用量。官网控制台与后端服务之间使用gRPC接口通信方式为客服端一次请求, 服务器一次应答。
按照上面介绍的方法我们可以制作一个简单的测试客户端模拟官网控制台对后端服务进行请求实现对用户用量的查询。
接口协议如下仅为演示需要只展示部分内容
service test {rpc GetUsage(GetUsageRequest) returns (GetUsageResponse);
}message GetUsageRequest {string appid 1;string account_id 4;string audience 2;string metric 3;
}message GetUsageResponse {Usage usage 1;
}
实现客户端关键方法如下
def subcmd_GetUsage(args):# 连接 rpc 服务器channel grpc.insecure_channel(ADDRESS)# 调用 rpc 服务stub test_pb2_grpc.testStub(channel)response stub.GetUsage(auth_pb2.GetUsageRequest(appidargs.appid,account_idargs.account_id,audienceargs.audience,metricargs.metric))print(GetUsage received: \n str(response.usage))
运行客户端已利用argparse模块做成命令行形式可以成功返回结果 进一步如果需要对接口进行并发下的稳定性测试可以将客户端编译成可执行程序或利用shell脚本再结合jmeter等自动化测试工具进行测试以编译可执行程序的方法为例。
首先利用pyinstaller工具将脚本编译为可执行程序
pyinstaller -F auth_client.py可以在dist目录下得到当前系统下的可执行程序。
接下来用jmeter编写自动化测试脚本在线程组下添加OS Process Sampler传入所需参数 运行脚本即可自动化进行测试并得到结果从中可以得到性能、稳定性等指标。 此外还可以结合jmeter的参数化功能对不同用户对于不同服务的用量进行查询从而更加真实地模拟线上请求的情景进行测试 小结 本文介绍了用python实现gRPC接口测试的方法可以快速地制作一个简易客户端应用于gRPC接口相关的测试有一定实用价值。对于gRPC接口本期主要讲了gRPC四种通信方式中最简单的一种即客服端一次请求, 服务器一次应答简单RPC。关于其他三种通信方式的实现感兴趣的同学可以参考gRPC相关文档在之后的文章中小编会再进行介绍。好了本期就到这里我们下期再见~
最后感谢每一个认真阅读我文章的人看着粉丝一路的上涨和关注礼尚往来总是要有的虽然不是什么很值钱的东西如果你用得到的话可以直接拿走
软件测试面试文档
我们学习必然是为了找到高薪的工作下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料并且有字节大佬给出了权威的解答刷完这一套面试资料相信大家都能找到满意的工作。