Go Web 编程入门:一探 GoConvey 测试库(上)

简介: GoConvey 完美兼容 Go 内置的 testing 库,提供命令行工具简化内置的测试执行命令,测试会自动运行,提供更加直观的 Web 界面,最重要的是能够很轻易的得到测试报告。

1 GoConvey 的特性

  • 直接集成 Go 内置测试工具,比如可以直接使用 go test
  • 大量的回归测试套件
  • 提供可读的,彩色的控制台输出
  • 完全自动化的 Web UI
  • 测试代码生成器
  • 桌面提醒(可选)
  • 自动在终端中运行自动测试脚本
  • 可立即在 Sublime Text 中打开测试问题对应的代码行 (some assembly required)


2 下载安装

$ go get github.com/smartystreets/goconvey
$ $GOPATH/bin/goconvey


安装成功将看到如下输出:

yuzhou@yuzhou:~/GoProjects$ go get github.com/smartystreets/goconvey/convey
go: downloading github.com/smartystreets/assertions v1.2.0
go: downloading github.com/jtolds/gls v4.20.0+incompatible
go: downloading github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1
go get: added github.com/smartystreets/goconvey v1.7.2


3 如何使用


结构如下:

image.png


  1. 创建一个 utils.go 文件,写一个整数求和的 Sum 函数:
package utils
func Sum(nums ...int) int {
  sum := 0
  for i := 0; i < len(nums); i++ {
    sum += nums[i]
  }
  return sum
}


然后创建一个单元测试的文件 utils_test.go 文件:

package utils
import (
  "testing"
  . "github.com/smartystreets/goconvey/convey"
)
func TestSum(t *testing.T) {
  Convey("Test Sum", t, func() {
    Convey("1 + 2 + 3 + 4 + 5", func() {
      So(Sum(1, 2, 3, 4, 5), ShouldEqual, 15)
    })
    Convey("1 + 2022", func() {
      So(Sum(1, 2022), ShouldEqual, 2023)
    })
  })
}


  • 第 6 行中 以 . 导入库的方式简化调用。
  • 第 9 行代码,单元测试函数的命名及注意事项和内置库 testing 要求一致(比如测试函数以 Test_开头,传入参数为*testing.T)。
  • 函数体中第一层 Convey 提供 3 个参数:Test Sum(说明测试的名称)、tfunc()
  • 嵌套的 Convey 层提供两个参数:1 + 2 + 3 + 4 + 5(说明测试的名称)和 func()
  • 使用 So 来判断预期值和输出,这里使用 ShouldEqual
package utils
import (
  "testing"
  . "github.com/smartystreets/goconvey/convey"
)
func TestSum(t *testing.T) {
  Convey("Test Sum", t, func() {
    Convey("1 + 2 + 3 + 4 + 5", func() {
      So(Sum(1, 2, 3, 4, 5), ShouldEqual, 15)
    })
    Convey("1 + 2022", func() {
      So(Sum(1, 2022), ShouldEqual, 2023)
    })
  })
}


因为 GoConvey 很好的集成了 Go 原生 tes 在终端中执行 go test -v 命令,得到如下结果,测试通过:

=== RUN   TestSum
  Test Sum 
    1 + 2 + 3 + 4 + 5 ✔
    1 + 2022 ✔
2 total assertions
--- PASS: TestSum (0.00s)
PASS
ok      utils.go        0.012s

在终端着有着非常人性化带有彩色的界面,如图所示:

image.png


相关文章
|
3月前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
343 1
|
2月前
|
Cloud Native 安全 Java
Go语言深度解析:从入门到精通的完整指南
🌟蒋星熠Jaxonic,Go语言探索者。深耕云计算、微服务与并发编程,以代码为笔,在二进制星河中书写极客诗篇。分享Go核心原理、性能优化与实战架构,助力开发者掌握云原生时代利器。#Go语言 #并发编程 #性能优化
404 43
Go语言深度解析:从入门到精通的完整指南
|
2月前
|
Java 测试技术 网络安全
Burp Suite Professional 2025.10 for Windows x64 - 领先的 Web 渗透测试软件
Burp Suite Professional 2025.10 for Windows x64 - 领先的 Web 渗透测试软件
107 0
Burp Suite Professional 2025.10 for Windows x64 - 领先的 Web 渗透测试软件
|
2月前
|
安全 Linux iOS开发
Burp Suite Professional 2025.10 发布 - Web 应用安全、测试和扫描
Burp Suite Professional 2025.10 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
251 3
|
3月前
|
安全 NoSQL Shell
web渗透-SSRF漏洞及discuz论坛网站测试
SSRF(服务器端请求伪造)是一种安全漏洞,攻击者可诱使服务端发起任意请求,进而探测或攻击内网系统。常用于端口扫描、访问内部服务、读取本地文件等。常见防御包括限制协议、域名和IP,但可通过302跳转、短地址等方式绕过。
235 1
web渗透-SSRF漏洞及discuz论坛网站测试
|
7月前
|
人工智能 安全 网络安全
Burp Suite Professional 2025.5 for macOS x64 & ARM64 - 领先的 Web 渗透测试软件
Burp Suite Professional 2025.5 for macOS x64 & ARM64 - 领先的 Web 渗透测试软件
313 3
|
安全 JavaScript 前端开发
AppSpider 7.5.020 发布 - Web 应用程序安全测试
AppSpider 7.5.020 for Windows - Web 应用程序安全测试
82 0
|
3月前
|
Cloud Native 安全 Java
Go语言深度解析:从入门到精通的完整指南
🌟 蒋星熠Jaxonic,执着的星际旅人,用Go语言编写代码诗篇。🚀 Go语言以简洁、高效、并发为核心,助力云计算与微服务革新。📚 本文详解Go语法、并发模型、性能优化与实战案例,助你掌握现代编程精髓。🌌 从goroutine到channel,从内存优化到高并发架构,全面解析Go的强大力量。🔧 实战构建高性能Web服务,展现Go在云原生时代的无限可能。✨ 附技术对比、最佳实践与生态全景,带你踏上Go语言的星辰征途。#Go语言 #并发编程 #云原生 #性能优化
|
3月前
|
安全 Linux iOS开发
Burp Suite Professional 2025.9 发布 - Web 应用安全、测试和扫描
Burp Suite Professional 2025.9 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
374 0
Burp Suite Professional 2025.9 发布 - Web 应用安全、测试和扫描