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


相关文章
|
12月前
|
JavaScript 前端开发 Java
通义灵码 Rules 库合集来了,覆盖Java、TypeScript、Python、Go、JavaScript 等
通义灵码新上的外挂 Project Rules 获得了开发者的一致好评:最小成本适配我的开发风格、相当把团队经验沉淀下来,是个很好功能……
1808 103
|
6月前
|
Cloud Native 安全 Java
Go语言深度解析:从入门到精通的完整指南
🌟蒋星熠Jaxonic,Go语言探索者。深耕云计算、微服务与并发编程,以代码为笔,在二进制星河中书写极客诗篇。分享Go核心原理、性能优化与实战架构,助力开发者掌握云原生时代利器。#Go语言 #并发编程 #性能优化
566 43
Go语言深度解析:从入门到精通的完整指南
|
11月前
|
人工智能 安全 算法
Go入门实战:并发模式的使用
本文详细探讨了Go语言的并发模式,包括Goroutine、Channel、Mutex和WaitGroup等核心概念。通过具体代码实例与详细解释,介绍了这些模式的原理及应用。同时分析了未来发展趋势与挑战,如更高效的并发控制、更好的并发安全及性能优化。Go语言凭借其优秀的并发性能,在现代编程中备受青睐。
364 33
|
11月前
|
人工智能 自然语言处理 安全
学不会编程也能写测试?AI让测试更平权
在传统的软件开发体系中,测试常被划分为“技术型测试”(如自动化、性能、安全)和“业务型测试”(如功能验证、用户体验)。前者掌握技术话语权,后者则更多依赖经验和流程规范。然而,随着大语言模型(LLM)等AI技术的迅猛发展,这一固有格局正被悄然打破:
360 10
|
9月前
WEB端交互元件库:Axure设计师的高效利器
EQL UI是一款功能强大、组件丰富的Axure元件库,涵盖500+设计组件与完整后台模板,助力设计师高效搭建高保真原型,提升产品设计效率与质量。
1037 128
|
7月前
|
Cloud Native 安全 Java
Go语言深度解析:从入门到精通的完整指南
🌟 蒋星熠Jaxonic,执着的星际旅人,用Go语言编写代码诗篇。🚀 Go语言以简洁、高效、并发为核心,助力云计算与微服务革新。📚 本文详解Go语法、并发模型、性能优化与实战案例,助你掌握现代编程精髓。🌌 从goroutine到channel,从内存优化到高并发架构,全面解析Go的强大力量。🔧 实战构建高性能Web服务,展现Go在云原生时代的无限可能。✨ 附技术对比、最佳实践与生态全景,带你踏上Go语言的星辰征途。#Go语言 #并发编程 #云原生 #性能优化
|
10月前
|
测试技术 程序员 Go
Go语言测试简明指南:深度解读go test命令
总的来说,go test是 Go 语言中一个强而有力的工具,每个 Go 程序员都应该掌握并把它融入到日常的开发和调试过程中。就像是一个眼镜过滤出的太阳,让我们在宽阔的代码海洋中游泳,而不是淹没。用好它,让我们的代码更健壮,让我们的生产力更强效。
704 23
|
SQL 存储 Oracle
跨库迁移有多难?我们用 YashanDB YMP 做了个测试,效果惊艳了
异构数据库迁移常被视为企业数字化转型中的难题,涉及SQL兼容性、对象依赖顺序与数据一致性等关键环节。YashanDB Migration Platform(YMP)通过实际测试展示了卓越能力,从Oracle到YashanDB的迁移表现超预期。其亮点包括:零脚本全自动迁移逻辑、全面支持复杂对象(如存储过程、触发器)、高性能迁移速度远超传统方案。YMP提供评估、SQL转换、对象迁移、数据校验及可视化全流程管理,为企业平滑过渡至国产数据库提供了可靠选择。
跨库迁移有多难?我们用 YashanDB YMP 做了个测试,效果惊艳了
|
12月前
|
存储 算法 数据可视化
【二叉树遍历入门:从中序遍历到层序与右视图】【LeetCode 热题100】94:二叉树的中序遍历、102:二叉树的层序遍历、199:二叉树的右视图(详细解析)(Go语言版)
本文详细解析了二叉树的三种经典遍历方式:中序遍历(94题)、层序遍历(102题)和右视图(199题)。通过递归与迭代实现中序遍历,深入理解深度优先搜索(DFS);借助队列完成层序遍历和右视图,掌握广度优先搜索(BFS)。文章对比DFS与BFS的思维方式,总结不同遍历的应用场景,为后续构造树结构奠定基础。
568 10
|
存储 人工智能 编译器
【03】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-测试hello word效果-虚拟华为手机真机环境调试-为DevEco Studio编译器安装中文插件-测试写一个滑动块效果-介绍诸如ohos.ui等依赖库-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
【03】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-测试hello word效果-虚拟华为手机真机环境调试-为DevEco Studio编译器安装中文插件-测试写一个滑动块效果-介绍诸如ohos.ui等依赖库-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
965 11
【03】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-测试hello word效果-虚拟华为手机真机环境调试-为DevEco Studio编译器安装中文插件-测试写一个滑动块效果-介绍诸如ohos.ui等依赖库-全过程实战项目分享-从零开发到上线-优雅草卓伊凡