grpc 接口自动化测试应该怎么去实现
你把自己当做是开发,学一下 golang 的 grpc 的开发,那你就知道怎么去测试了!
头疼, 就提供这么一条信息,哪个大夫也不敢给您开药方。
直接写接口调用去调?grpc 可以直接根据 proto 文件生成不同语言的调用函数吧。
事实上就是这样的,大概是两个层面,如果你只是测试 grpc+gin 暴露出来的 http 接口的话,这种就随便用啥语言都可以了。但是那个接口包含了复杂的微服务之间的相互调用,如果你想更加颗粒的测试微服务之间暴露的接口,你就要学 go,就要去学你们用的 grpc 框架,通过 proto 的接口声明来测试。
是的,现在就要测微服务直接的接口。也在学习 go
现在的疑惑是,开发每新增一个接口,我就需要对测试代码进行扩展(新增一个测试方法)。
应该怎么去做,可以自动生成新的测试用例
你修改下你的正文吧?你的问题不是要怎么去做自动化,而是你觉得你现在的方法不大好,想看下有什么可以优化。
可以把你现在用例怎么写的,也举个例子说明下吧,要不不知道你用的方法和大家理解的是否一致。
我刚接触 grpc 测试。也是根据网上案例来实现 grpcClient 调用
就是想看看大家都是怎么去实现测试 以及自动化测试的
你能实现到 grpc 的客户端,就可以自动化啦。这个跟 http 几乎没什么区别。
自动生成新的测试用例这个方面,也是两个方面,一个是通用的检验规则,这个是可以自动生成的,加个注解或者装饰器啥的,但是我们往往更加关注业务,所以目前来看,开发每新增一个微服务,你都要加用例,关注与业务逻辑方面以及服务暴露的安全方面。
我理解有两种方式:
1、自己实现 GRPC client,这种需要自己根据 ip:port 调用 dial 连接这些方法,然后构造请求对象去调用具体的 grpc 方法,这种方式比较通用。可以参考:https://github.com/myzhan/boomer/blob/master/examples/grpc/main.go
2、看看自己项目其他应用是如何调用被测应用的 grpc 接口的,比如我们项目是使用 microkit 的,它的 rpc 接口通过 pb 定义,并生成.pb.go,.microkit.go 文件,里面就有 NewClient 方法,拿到 client 后直接用来发起请求就可以了。
client := livetech.NewClient()
req := &livetech.GetQualityListRequest{
}
resp, err := client.GetQualityList(context.Background(), req)
.pb.go,.microkit.go 文件 可以理解成是 rpc 服务的接口说明,用就是了。
我用 bloomrpc 和 grpcox
我现在的做法,
1、go.mod 配置 require(要测试的业务代码 Git)
2、go mod download
3、提示业务代码依赖的某些目录加载失败
4、将依赖的模块添加到 go.mod 里,重新 go mod download
5、开始调用开发已经编译好的 *.pd.go 里的 struct 以及 NewClient
这样做法我总感觉不对
有比较好的想法了吗??