美文网首页
GRPC 如何使用python3进行测试?

GRPC 如何使用python3进行测试?

作者: Leoguo小哥 | 来源:发表于2024-05-22 23:02 被阅读0次

首先安装grpc 服务

pip3 install grpcio

pip3 install grpcio-tools

使用grpc_tools工具将.proto文件编译成py文件

切换到*.proto所在的文件根目录,执行命令,生成decimal_pb2.py和decimal_pb2_grpc.py:

python -m grpc_tools.protoc -I./ --python_out=./ --grpc_python_out=./ helloworld.proto

对于简单的请求,请求参数只有key: value(string/int/bool)

下面我们来看service.proto:

他定义了一个service AssetTransferRpcService, 这个在python3中,我们可以看作是他定义了一个java或者python3的类,类里面包含:
1、Transfer
2、GetTransferRecord
3、GetFuturesBalance

这三个为类中的方法

rpc Transfer(TransferRequest) returns(TransferResponse){};:

TransferRequest:这个是请求体入参,我们传递请求参数的地方。

TransferResponse:响应体,响应结果按照这个格式进行正确的返回。

那么对于TransferRequest,这个请求体的入参参数是什么?

我们通常可以在message.proto中,找到对应的请求参数定义

TransferResponse:响应体,响应的内容包含什么?

我们通常可以在message.proto中,找到对应的请求参数定义

对于复杂的请求,请求参数key: list [ value(string/int/bool) ]

我们看下proto文件中是如何定义的

service AssetOperateRpcService : 这个是一个类。类下面有几个方法

对于请求体,

message BatchAssetOperateRequest{

int64 userId = 1;

repeated AssetOperateParam asset_updates = 2;

}

请求体包含两部分,一个userId,还有一个asset_updates,但是asset_updates又是一个重复的AssetOperateParam,也就是数组中,有两个一样的请求参数。

对于message AssetOperateParam,他的构造健值对,又是一个新的。那么我们要怎么进行参数拼接呢?接下来继续看。

我们要进行客户端的连接以及进行header头传递是一样的,只是在请求体处不一样

从上面我们可以看出,asset_param_3 = message_pb2.AssetOperateParam以及asset_param_4 = message_pb2.AssetOperateParam。

我们需要先构建出请求体数组中的参数,还是使用message_pb2这个文件,.AssetOperateParam,证明是组装我们数组中的请求体。

数组中的请求体组装完成后,我们进行批量的请求体的组装:

第一个是userId=1239248,第二个是asset_updates=[asset_param_3, asset_param_4]。

批量请求体的数据组装完成后,还是利用message_pb2这个文件, .BatchAssetOperateRequest (这个正是我们service的入参的参数) ,,组装我们数组中的请求体,

最后调用客户端stub,进行stub 段的请求发送

如果有需要,请加小哥V ❤️:huangege1224(欢哥哥1224的拼音)

相关文章

网友评论

      本文标题:GRPC 如何使用python3进行测试?

      本文链接:https://www.haomeiwen.com/subject/nnozfjtx.html