【接口测试】Go语言进行简单的接口测试【go语言做接口开发 go语言开发ui】在正常的测试中go语言做接口开发,当go语言做接口开发我们需要进行接口测试时go语言做接口开发,通常使用接口调试工具,如postman进行接口测试
目前我在尝试使用Go语言进行接口测试,使用的库均为Go自带的库 。
注:当前采用的接口为时事新闻接口,每天可以请求100次,需要的同学,可以自行使用 。
gRPC服务开发和接口测试初探「Go」之前写过了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语言HTTPServer开发的六种实现学完了 net/http 和 fasthttp 两个HTTP协议接口的客户端实现 , 接下来就要开始Server的开发,不学不知道一学吓一跳,居然这两个库还支持Server的开发,太方便了 。
相比于Java的HTTPServer开发基本上都是使用Spring或者Springboot框架,总是要配置各种配置类,各种 handle 对象 。Golang的Server开发显得非常简单 , 就是因为特别简单,或者说没有形成特别统一的规范或者框架 , 我发现了很多实现方式,HTTP协议基于还是 net/http 和 fasthttp , 但是 handle 语法就多种多样了 。
先复习一下: Golang语言HTTP客户端实践 、 Golang fasthttp实践。
在Golang语言方面,实现某个功能的库可能会比较多 , 有机会还是要多跟同行交流,指不定就发现了更好用的库 。下面我分享我学到的六种Server开发的实现Demo 。
基于 net/http 实现,这是一种比较基础的,对于接口和 handle 映射关系处理并不优雅,不推荐使用 。
第二种也是基于 net/http,这种编写语法可以很好地解决第一种的问题,handle和path有了类似配置的语法,可读性提高了很多 。
第三个基于 net/http 和 github.com/labstack/echo ,后者主要提供了 Echo 对象用来处理各类配置包括接口和handle映射,功能很丰富 , 可读性最佳 。
第四种依然基于 net/http 实现,引入了 github.com/gin-gonic/gin 的路由,看起来接口和 handle 映射关系比较明晰了 。
第五种基于 fasthttp 开发,使用都是 fasthttp 提供的API,可读性尚可,handle配置倒是更像Java了 。
第六种依然基于 fasthttp ,用到了 github.com/buaazp/fasthttprouter,有点奇怪两个居然不在一个GitHub仓库里 。使用语法跟第三种方式有点类似 , 比较有条理,有利于阅读 。
GO语言(十三):使用 Go 和 Gin 开发 RESTful API(下)当客户端在 发出POST请求时/albums , 您希望将请求正文中描述的专辑添加到现有专辑数据中 。
为此,您将编写以下内容:
1、编写代码
a.添加代码以将专辑数据添加到专辑列表 。
在此代码中:
1)用于Context.BindJSON 将请求正文绑定到newAlbum 。
2) album将从 JSON 初始化的结构附加到albums 切片 。
3)向响应添加201状态代码,以及表示您添加的专辑的 JSON 。
b.更改您的main函数 , 使其包含该router.POST函数,如下所示 。
在此代码中:
1)将路径中的POST方法与 /albumspostAlbums函数相关联 。
使用 Gin,您可以将处理程序与 HTTP 方法和路径组合相关联 。这样,您可以根据客户端使用的方法将发送到单个路径的请求单独路由 。
a.如果服务器从上一节开始仍在运行,请停止它 。
b.从包含 main.go 的目录中的命令行 , 运行代码 。
c.从不同的命令行窗口,用于curl向正在运行的 Web 服务发出请求 。
该命令应显示添加专辑的标题和 JSON 。
d.与上一节一样 , 使用curl检索完整的专辑列表,您可以使用它来确认添加了新专辑 。
该命令应显示专辑列表 。
当客户端向 发出请求时GET /albums/[id],您希望返回 ID 与id路径参数匹配的专辑 。
为此,您将:
a.在您在上一节中添加的函数下方postAlbums,粘贴以下代码以检索特定专辑 。
此getAlbumByID函数将提取请求路径中的 ID,然后找到匹配的专辑 。
在此代码中:
(1)Context.Param用于从 URL 中检索id路径参数 。当您将此处理程序映射到路径时 , 您将在路径中包含参数的占位符 。
(2)循环album切片中的结构,寻找其ID 字段值与id参数值匹配的结构 。如果找到,则将该album结构序列化为 JSON , 并将其作为带有200 OK HTTP 代码的响应返回 。
如上所述,实际使用中的服务可能会使用数据库查询来执行此查找 。
(3)如果找不到专辑,则返回 HTTP 404错误 。
b.最后,更改您的main,使其包含对router.GET的新调用,路径现在为/albums/:id ,如以下示例所示 。
在此代码中:
(1)将/albums/:id路径与getAlbumByID功能相关联 。在 Gin 中,路径中项目前面的冒号表示该项目是路径参数 。
a.如果服务器从上一节开始仍在运行,请停止它 。
b.在包含 main.go 的目录中的命令行中,运行代码以启动服务器 。
c.从不同的命令行窗口,用于curl向正在运行的 Web 服务发出请求 。
该命令应显示您使用其 ID 的专辑的 JSON 。如果找不到专辑 , 您将收到带有错误消息的 JSON 。
恭喜!您刚刚使用 Go 和 Gin 编写了一个简单的 RESTful Web 服务 。
本节包含您使用本教程构建的应用程序的代码 。
go语言做接口开发的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于go语言开发ui、go语言做接口开发的信息别忘了在本站进行查找喔 。
推荐阅读
- go语言递归查询父子关系,递归查找父节点
- sap影响实际成本的因素,sap成本控制范围
- pg创建sde数据库,新建pg数据库
- vb.net公用变量 vb中的变量名是什么
- 拍摄什么证件最好,拍摄什么证件最好拍
- 广州第三方直播电商如何做,广州第三方直播电商如何做推广
- 宠爱下载,宠爱下载链接
- python引入函数模块 python引入数学函数
- 直播用什么调音台,直播用什么调音设备