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


相关文章
|
5月前
|
算法 Java Go
【GoGin】(1)上手Go Gin 基于Go语言开发的Web框架,本文介绍了各种路由的配置信息;包含各场景下请求参数的基本传入接收
gin 框架中采用的路优酷是基于httprouter做的是一个高性能的 HTTP 请求路由器,适用于 Go 语言。它的设计目标是提供高效的路由匹配和低内存占用,特别适合需要高性能和简单路由的应用场景。
505 4
|
5月前
|
Cloud Native 安全 Java
Go语言深度解析:从入门到精通的完整指南
🌟蒋星熠Jaxonic,Go语言探索者。深耕云计算、微服务与并发编程,以代码为笔,在二进制星河中书写极客诗篇。分享Go核心原理、性能优化与实战架构,助力开发者掌握云原生时代利器。#Go语言 #并发编程 #性能优化
541 43
Go语言深度解析:从入门到精通的完整指南
|
10月前
|
人工智能 安全 网络安全
Burp Suite Professional 2025.5 for macOS x64 & ARM64 - 领先的 Web 渗透测试软件
Burp Suite Professional 2025.5 for macOS x64 & ARM64 - 领先的 Web 渗透测试软件
454 3
|
5月前
|
Java 测试技术 网络安全
Burp Suite Professional 2025.10 for Windows x64 - 领先的 Web 渗透测试软件
Burp Suite Professional 2025.10 for Windows x64 - 领先的 Web 渗透测试软件
259 0
Burp Suite Professional 2025.10 for Windows x64 - 领先的 Web 渗透测试软件
|
5月前
|
安全 Linux iOS开发
Burp Suite Professional 2025.10 发布 - Web 应用安全、测试和扫描
Burp Suite Professional 2025.10 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
391 3
|
6月前
|
安全 NoSQL Shell
web渗透-SSRF漏洞及discuz论坛网站测试
SSRF(服务器端请求伪造)是一种安全漏洞,攻击者可诱使服务端发起任意请求,进而探测或攻击内网系统。常用于端口扫描、访问内部服务、读取本地文件等。常见防御包括限制协议、域名和IP,但可通过302跳转、短地址等方式绕过。
351 1
web渗透-SSRF漏洞及discuz论坛网站测试
|
安全 JavaScript 前端开发
AppSpider 7.5.020 发布 - Web 应用程序安全测试
AppSpider 7.5.020 for Windows - Web 应用程序安全测试
164 0
|
6月前
|
Cloud Native 安全 Java
Go语言深度解析:从入门到精通的完整指南
🌟 蒋星熠Jaxonic,执着的星际旅人,用Go语言编写代码诗篇。🚀 Go语言以简洁、高效、并发为核心,助力云计算与微服务革新。📚 本文详解Go语法、并发模型、性能优化与实战案例,助你掌握现代编程精髓。🌌 从goroutine到channel,从内存优化到高并发架构,全面解析Go的强大力量。🔧 实战构建高性能Web服务,展现Go在云原生时代的无限可能。✨ 附技术对比、最佳实践与生态全景,带你踏上Go语言的星辰征途。#Go语言 #并发编程 #云原生 #性能优化
|
6月前
|
安全 Linux iOS开发
Burp Suite Professional 2025.9 发布 - Web 应用安全、测试和扫描
Burp Suite Professional 2025.9 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
549 0
Burp Suite Professional 2025.9 发布 - Web 应用安全、测试和扫描