一. gRPC介绍
在gRPC中,客户端应用程序可以直接在不同机器上的服务器应用程序上调用方法,就像它是本地对象一样,使您更容易创建分布式应用程序和服务。
二. 如何生成gRPC代码
概述
手动编写proto文件,然后通过gRPC的程序生成C++/Python代码
使用 protocol buffers 去定义 gRPC 的 service 的方法和request 以及 response 的类型
参考TalkLogicRpc\TalkLogicRpc.proto文件
gRPC service 方法
service Call {
rpc GetTalkData (GetTalkDataReq) returns (GetTalkDataResp);
}
request 以及 response 的类型
message GetShareHandleReq {
}
message GetShareHandleResp {
uint32 result = 1;
}
三. 接口编写基本流程
- 找到要写的接口,例如创建会议,在开发给的描述文档查找接口方法名以及 request 请求参数
- 创建通道(channel)
- 实例化conf/cal模块接口的对象(这个对象就叫存根)
- 定义请求参数request
- 调用对应模块对象里的方法(makeCall: 创建通话,createConference: 创建会议等等),获取返回参数 response
- 备注:各个接口 request 与
response 参数的具体属性,请查看:TalkLogicRpc\TalkLogicRpc.proto文件
- 备注:各个接口 request 与
实例
- 创建一个存根
为了能调用服务的方法,我们得先创建一个存根
with grpc.insecure_channel('localhost:50006') as channel:
返回的对象实现了定义在 ConfStub
接口中的所有对象。
- 定义 request 请求
request = TalkLogicRpc_pb2.CreateConferenceReq(listInviteMember=listInviteMember,
videoCall=videoCall,
groupId='')
- 返回 responese 数据
response = stub.CreateConference(request)
以上则完成了单个接口,单个请求参数的接口用例编写介绍
四. 接口用例自动生成框架
背景:
- 一个接口往往存在多种入参,例如建立通话的号码,可以呼各种情况【‘5061’,‘空’,‘特殊字符’等等】,而同一个接口的方法体基本相同
- 为了方便统计,需要使用unittest框架生成测试报告统计测试结果
需求:
为了满足1和2,需要可以在同一个接口,根据参数配置,自动生成测试用例,因此封装了框架
1. 目录结构
API-Python
├─common # 存放公共方法:包括开发给的接口,自己写的公共方法
├─result # 执行脚本
├─testcase # 存放用例
│ ├──call
│ └──meeting
├─config.ini # 工具类
├─runAll.py # 工具类
└─errorcode_config.xls # 存放接口入参及期望值,一个接口一个页签
2. 注意事项
在testCase/模块的目录下新增接口测试py文件时(例如建立通话接口测试——test_make_call.py)
- 函数名和类型不能改变,只要改变
interface_func()
的方法体
- 函数名和类型不能改变,只要改变
- 在
errorcode_config.xls
配置入参和期望值
- 在
- 在
runAll.py
配置
- 在
module_str = 'testCase.meeting' # 要运行的接口模块
interface_list=['test_disable_member_speaker'] # 要运行的接口名称
- 运行
runAll.py
即可测试
- 运行
备注
当前的多接口运行,暂时只支持单模块多接口,后面会继续修改成 多模块多接口可配
网友评论