加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 综合聚焦 > 资源网站 > 资源 > 正文

用Python进行gRPC接口测试(二)

发布时间:2020-02-14 16:36:20 所属栏目:资源 来源:搜狗测试
导读:今天将继续为大家带来用 Python 进行gRPC接口 测试 的续集,上次主要讲了一下前期准备工作和简单RPC通信方式的实现,这次我们将着眼于另一类gRPC接口的通信形式——流式RPC。 上期回顾:用Python进行gRPC接口测试: http://www.51testing.com/html/93/n-44
  今天将继续为大家带来用Python进行gRPC接口测试的续集,上次主要讲了一下前期准备工作和简单RPC通信方式的实现,这次我们将着眼于另一类gRPC接口的通信形式——流式RPC。  上期回顾:用Python进行gRPC接口测试:http://www.51testing.com/html/93/n-4463993.html  一、流式RPC的三种具体形式  流式RPC不同于简单RPC只有“单发单收“一种形式,而是可以分为三种不同的形式——“应答流式RPC”,“请求流式RPC”,“双向流式RPC”。对于这三种不同的形式,python有不同的请求及接收方式,下面就让我们来具体了解一下。(对于下面操作有疑问的同学可以去看上一期的内容)  首先接口协议是有区别的,我们来看三种形式的接口定义:  应答流式RPC:  请求流式RPC:  双向流式RPC:  可以看到,请求和响应参数中流式内容的前面会有一个stream标识,代表这是一个流式的内容。应答流式RPC只有返回是流式的,请求流式RPC只有请求是流式的,而双向流式RPC请求和返回都是流式的。  一个包含接口的完整proto协议文件(route_guide.proto)内容如下:  根据协议文件生成route_guide_pb2.py、route_guide_pb2_grpc.py两个必要的模块文件,然后就可以根据他们来创建客户端了。  二、客户端实现  1、应答流式RPC  应答流式RPC返回的内容为流式,一次请求,n次返回。我们可以用for循环来接收返回的内容:  2、请求流式RPC  请求流式RPC请求的内容为流式,n次请求,一次返回。我们可以用迭代器来发送若干份请求数据:  其中route_iterator为一个迭代器。  3、双向流式RPC  双向流式RPC请求的内容为流式,返回内容也为流式,n次请求,n次返回。我们可以用迭代器来发送若干份请求数据,通过for循环来接收返回结果:   三、实际应用  在录音笔项目中,需要对转写后的文本进行分段语义整理,由于文本内容可能较多,服务端需要采用流式的方式进行接收,并通过流式的方式将结果返给客户端,于是这里采用了双向流式RPC形式的接口。  接口协议如下(仅为演示需要,只展示部分内容):  实现客户端的关键代码如下:  运行客户端,可以成功返回结果:用Python进行gRPC接口测试(二)  进一步,如果需要对接口进行并发下的稳定性测试,依然可以将客户端编译成可执行程序或利用shell脚本,再结合jmeter等自动化测试工具进行测试,以编译可执行程序的方法为例:  首先利用pyinstaller工具将脚本编译为可执行程序,接下来用jmeter编写自动化测试脚本,在线程组下添加OS Process Sampler,传入所需参数(下面的三个参数值为:文本,地址,句子起始编号):用Python进行gRPC接口测试(二)  运行脚本,即可自动化进行测试并得到结果,从中可以得到性能、稳定性相关指标:用Python进行gRPC接口测试(二)  此外还可以结合jmeter的参数化功能和随机功能设置一些参数值,比如文本文件和句子起始id,从而更加全面地对接口进行测试:用Python进行gRPC接口测试(二)  小结  本文介绍了用python实现其他三种形式gRPC接口测试的方法,这样四种形式的gRPC接口我们就都可以比较方便地进行测试了,对于今后需要测试gRPC接口的同学可以提供一些借鉴,当然有更好地方法欢迎大家一起讨论交流。~

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读