在正常的测试中,当我们需要进行接口测试时,通常使用接口调试工具,如postman进行接口测试
创新互联公司专注于永城网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供永城营销型网站建设,永城网站制作、永城网页设计、永城网站官网定制、微信小程序服务,打造永城网络公司原创品牌,更为您提供永城网站排名全网营销落地服务。
目前我在尝试使用Go语言进行接口测试,使用的库均为Go自带的库。
注:当前采用的接口为时事新闻接口,每天可以请求100次,需要的同学,可以自行使用。
之前写过了Grpc服务开发和接口测试初探【Java】,中间耽搁了一些时间,Go版本的gRPC测试开发实践才有时间学习使用。其中也是由于自己Go语言不够熟悉导致的。之前有段时间想暂时放弃Go语言的学习,导致了Go的生疏,原因是从Groovy到Java性能。
回归正题,Go语言版本的gRPC实践相对Java来说是比较简单的,但是总体的工具链是比较复杂的,可能是因为Go生态目前相比Java还是比较匮乏吧。下面我先简述一下大致的步骤:
以上步骤亲自操作可能会遇到一些小问题,我本人搜到的教程什么的也是乱七八糟,踩了一些坑。我没有整理出一个亲自实践之后的可行的教程,原因有二:
Go语言的gRPC的 proto 编写跟Java大致一致,只有一个报名的参数不太一样。下面是我的 Hello.proto 内容:
这里主要 go_package 网上搜到的配置方式有些不一样,我没有全都尝试,大家在搜索的资料时候,尽量先看看 syntax 这个参数的值,以及文章教程写作的时间,如果距离现在太久了,我建议直接关掉。搜索引擎有过滤功能,可以过滤掉过时的教程。
这里Go语言gRPC的一点优势,就是在一个项目中即可实现,Java需要先弄一个SDK这样。Go语言的gRPC的代码可以通过生成代码命令中的参数实现指定路径。我是放在了和 proto 文件的同级目录。
服务端代码也是比较格式化的内容,如下:
其中 pb.RegisterHelloServiceServer(s, Ser{}) 如果报错,请检查自己安装的工具 protoc-gen-go 或者 protoc-gen-gofast 版本,一般提取报错 message 搜索也能得到解决办法。
下面是客户端的代码,由于学艺不精,其中大部分参数的含义目前我也不是很清楚,特别是基于 stream 的请求响应的方式使用。后面我先把Java的学完,再回过头来看Go的,按照这个顺序学习和分享。
服务端输出:
忘记打日志了。没有输出
客户端输出:
Go语言的gRPC测试开发实践已经完事儿,大概率上我不会在工作中使用Go作为主力gRPC测试语言,后面测试实践内容还是会以Java为主。
在 Go 语言中,如果一个接口在一个包里,其他包要实现该接口,需要遵循下列步骤:
1. 定义接口:
假设接口定义在 `foo` 包中:
go
package foo
type MyInterface interface {
MyMethod() string
}
2. 实现接口:
定义一个新的类型 `Bar`,并为其实现 `foo.MyInterface` 接口:
go
package bar
import "your-package/foo"
type Bar struct {
// ...
}
func (b Bar) MyMethod() string {
// implement method
return "bar"
}
在这里,需要导入 `foo` 包,并定义一个 `Bar` 类型,为其实现 `foo.MyInterface` 接口,这样就完成了在不同包中实现接口的目标。
如果在其他包中使用 `Bar`,需要先导入 `bar` 包,然后声明 `Bar` 实例,并将其转换为 `foo.MyInterface`,然后就可以调用 `MyMethod` 方法了:
go
import "your-package/bar"
func main() {
var myInterface foo.MyInterface = new(bar.Bar)
myInterface.MyMethod()
}
在这里,我们定义了一个 `myInterface` 实例,将其类型声明为 `foo.MyInterface`,并将其初始化为 `new(bar.Bar)`。这允许我们调用 `MyMethod` 方法,这个方法实际上是由 `bar.Bar` 类型实现的。
总结起来,在其他包中使用其它包的接口,需要实现接口的包定义一个新的类型,并完成接口的实现,另一个使用接口的包需要导入实现包的路径,并将接口转换成实现类型。