内容提要
本文介绍了一款基于Go语言开发的自动测试工具,能够根据OpenAPI文档进行接口测试并生成报告。该工具使用Resty库简化HTTP请求,采用Uber的zap库进行日志记录,并利用excelize库导出测试报告。文章还分享了对Go语言语法和特性的个人看法。
延伸解读
Go 交叉编译的部署优势
作者选择 Go 开发该工具,核心原因是 Go 能傻瓜式实现交叉编译,生成的可执行文件直接上传服务器即可运行,无需额外配置运行环境。对于需要频繁部署到不同服务器的测试工具来说,这大幅简化了发布流程。不过作者也坦言 Go 语法写起来别扭,但编译体验极佳,这种矛盾感受值得正在选型的开发者参考。
日志库选型:从 logrus 到 zap
作者最初使用内置 log,因功能少且无日志等级而放弃;随后尝试 logrus,但发现其已进入维护模式,官方建议转向 Zerolog、Zap 等。最终选用 Uber 的 zap,认为其开箱即用,搭配 zapcore 可配置多输出、按大小分割文件,并能对接日志收集平台。这一选型过程提醒读者:选库时需关注项目活跃度与维护状态。
Excel 报告导出与代码风格取舍
工具使用 excelize 库将测试结果写入 Excel,包含接口名称、路径、是否通过和耗时等字段。作者在代码中吐槽 Go 没有三元表达式,只能用匿名函数模拟,后来利用泛型编写了 If 函数来简化。此外,排序需借助 sort.Slice 和匿名函数,作者认为不如 C# 的 LINQ 顺手。这些细节反映了 Go 在表达简洁性上的取舍。
Q&A
这款自动测试工具是用什么语言开发的?
这款自动测试工具是用Go语言开发的。
该工具如何生成测试报告?
该工具根据OpenAPI文档进行接口测试,并在测试完成后输出测试报告,报告内容包括每个接口是否测试通过和响应时间等。
使用了哪些库来实现HTTP请求和日志记录?
该工具使用Resty库简化HTTP请求,使用Uber的zap库进行日志记录。
Resty库有什么特点?
Resty库是一个简单而强大的Go HTTP客户端,支持多种请求类型,自动解析JSON数据,并提供自动重试和超时设置等功能。
如何将测试结果导出到Excel文件?
使用excelize库可以将测试结果写入Excel文件,创建工作表并设置列名后,遍历测试报告写入数据。
作者对Go语言的看法是什么?
作者认为Go语言的语法有些别扭,但编译体验很好。