使用go语言开发自动化API测试工具 - 程序设计实验室

使用go语言开发自动化API测试工具 - 程序设计实验室

💡 原文中文,约5800字,阅读约需14分钟。
📝

内容提要

本文介绍了一款基于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语言的语法有些别扭,但编译体验很好。

🏷️

标签

➡️

继续阅读