Golang测试框架goconvey进行单元测试流程介绍

 更新时间:2023年05月19日 10:40:07   作者:Sahm5k  
goconvey是一款针对Golang的测试框架,可以管理和运行测试用例,同时提供了丰富的断言函数,并支持很多Web界面特性,这篇文章主要介绍了使用goconvey进行单元测试流程,感兴趣的同学可以参考下文

导包

import “github.com/smartystreets/goconvey”

核心API

顶层Convey:由测试描述、testing.T,行为函数组成。

Convey(description string, t *testing.T, action func())

其他层Convey:

Convey(description string, action func())

值断言:判断actual值是否符合预期。

func So(actual any, assert Assertion, expected ...any)

actual:实际值。

Assertion:断言条件,一般为ShouldXXX组成,

expect:预期值。

convey运行顺序

由树形结构进行遍历

 Convey A
    So 1
        Convey B
        So 2
    Convey C
        So 3

执行顺序:1 A->B 、2 A->C

代码示例

1.测试x++

func TestGetSumScore(t *testing.T) {
	Convey("start x is 0", t, func() {
		x := 0
		Convey("x++", func() {
			x++
			So(x, ShouldEqual, 1)
		})
	})
}

2.使用多层嵌套:测试GetSumScore函数

GetSumScore函数实现:

type Student struct {
	ID    int64
	Name  string
	Age   int8
	Major string
	Score int
}
// 返回这些学生的分数总和
func GetSumScore(students []Student) int {
	total := 0
	for _, v := range students {
		total += v.Score
	}
	return total
}

测试代码:

func TestGetSumScore(t *testing.T) {
	convey.Convey("init students", t, func() {
		students := []Student{
			{Name: "yi", Score: 90},
			{Name: "w", Score: 100},
		}
		score := GetSumScore(students)
		convey.Convey("GetSumScore", func() {
			convey.So(score, convey.ShouldEqual, 190)
		})
		convey.Convey("Change students[0].score", func() {
			students[0].Score = 10
			score := GetSumScore(students)
			convey.So(score, convey.ShouldEqual, 110)
		})
	})
}

到此这篇关于Golang测试框架goconvey进行单元测试流程介绍的文章就介绍到这了,更多相关Golang goconvey内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解Golang 推荐的命名规范

    详解Golang 推荐的命名规范

    这篇文章主要介绍了详解Golang 推荐的命名规范,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-02-02
  • go语言实现简易比特币系统之交易签名及校验功能

    go语言实现简易比特币系统之交易签名及校验功能

    这篇文章主要介绍了go语言实现简易比特币系统之交易签名及校验功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • Golang使用gorm实现分页功能的示例代码

    Golang使用gorm实现分页功能的示例代码

    在提供列表接口时一般要用到分页,对于存储在某些数据库中的数据进行分页起来非常的方便,下文给出一个通过gorm进行分页并通过http返回数据的例子,感兴趣的小伙帮跟着小编一起来看看吧
    2024-10-10
  • 快速掌握Go语言正/反向代理

    快速掌握Go语言正/反向代理

    这篇文章主要介绍了快速掌握Go语言正/反向代理的相关资料,需要的朋友可以参考下
    2022-11-11
  • Go语言声明一个多行字符串的变量

    Go语言声明一个多行字符串的变量

    这篇文章主要介绍了Go语言声明一个多行字符串的变量的方法和示例,非常简单实用,有需要的小伙伴可以参考下。
    2015-04-04
  • Go语言设置JSON的默认值操作

    Go语言设置JSON的默认值操作

    这篇文章主要介绍了Go语言设置JSON的默认值操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • Golang中的信号(Signal)机制详解

    Golang中的信号(Signal)机制详解

    Signal 是一种操作系统级别的事件通知机制,进程可以响应特定的系统信号,这些信号用于指示进程执行特定的操作,如程序终止、挂起、恢复等,Golang 的标准库 os/signal 提供了对信号处理的支持,本文将详细讲解 Golang 是如何处理和响应系统信号的,需要的朋友可以参考下
    2024-01-01
  • golang 如何通过反射创建新对象

    golang 如何通过反射创建新对象

    这篇文章主要介绍了golang 通过反射创建新对象的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • Go语言编程中字符串切割方法小结

    Go语言编程中字符串切割方法小结

    这篇文章主要介绍了Go语言编程中字符串切割方法小结,所整理的方法都来自字符串相关的strings包,需要的朋友可以参考下
    2015-10-10
  • Golang中HTTP路由设计的使用与实现

    Golang中HTTP路由设计的使用与实现

    这篇文章主要介绍了Golang中HTTP路由设计的使用与实现,为什么要设计路由规则,因为路由规则是HTTP的请求按照一定的规则 ,匹配查找到对应的控制器并传递执行的逻辑,需要的朋友可以参考下
    2023-05-05

最新评论