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程序实现进度条示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • Go 中闭包的底层原理

    Go 中闭包的底层原理

    这篇文章主要介绍了Go 中闭包的底层原理,闭包的基本原理是一种现象,一个函数内引用了外部的局部变量的现象,带着些许的了解和小编一起进入文章正题学习
    2021-10-10
  • Golang中时间相关操作合集

    Golang中时间相关操作合集

    这篇文章主要为大家介绍了Golang中的各种时间相关操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-09-09
  • Golang实现Mongo数据库增删改查操作

    Golang实现Mongo数据库增删改查操作

    本文主要介绍了Golang实现Mongo数据库增删改查操作,我们使用了 MongoDB的官方Go驱动程序,实现了插入、查询、更新和删除操作,感兴趣的可以了解一下
    2024-01-01
  • Go语言中反射的正确使用

    Go语言中反射的正确使用

    Go本身不支持模板,因此在以往需要使用模板的场景下往往就需要使用反射(reflect). 反射使用多了以后会容易上瘾,有些人甚至会形成一种莫名其妙的鄙视链。下面这篇文章就给大家介绍了如何正确使用Go语言中的反射以及在使用前的注意,有需要的朋友们下面来一起看看吧。
    2016-12-12
  • Golang操作MySql数据库的完整步骤记录

    Golang操作MySql数据库的完整步骤记录

    这篇文章主要给大家介绍了关于Golang操作MySql数据库的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • go语言实现接口查询

    go语言实现接口查询

    这篇文章主要介绍了go语言实现接口查询,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • Golang的性能优化和调试技巧

    Golang的性能优化和调试技巧

    在开发和部署Go语言应用程序时,性能优化和调试是至关重要的,篇博客将介绍一些常用的Golang性能优化和调试技巧,帮助您提升应用程序的性能并解决潜在的问题
    2023-05-05
  • Golang cron 定时器和定时任务的使用场景

    Golang cron 定时器和定时任务的使用场景

    Ticker是一个周期触发定时的计时器,它会按照一个时间间隔往channel发送系统当前时间,而channel的接收者可以以固定的时间间隔从channel中读取事件,这篇文章主要介绍了Golang cron 定时器和定时任务,需要的朋友可以参考下
    2022-09-09
  • 深入了解Go语言中sync.Pool的使用

    深入了解Go语言中sync.Pool的使用

    本文将介绍 Go 语言中的 sync.Pool并发原语,包括sync.Pool的基本使用方法、使用注意事项等的内容,对我们了解Go语言有一定的帮助,需要的可以参考一下
    2023-04-04

最新评论