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

作者:Sahm5k 时间:2024-02-09 04:21:27 

导包

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)
})
})
}

来源:https://blog.csdn.net/weixin_44866921/article/details/130742368

标签:Golang,测试框架,goconvey,单元测试
0
投稿

猜你喜欢

  • perl获取日期与时间的实例代码

    2023-03-30 23:57:01
  • php出现Cannot modify header information问题的解决方法大全

    2024-05-02 17:35:21
  • Python实现对百度云的文件上传(实例讲解)

    2022-04-16 03:15:46
  • 一个简单的ASP计数器代码

    2010-04-24 15:49:00
  • 用Python实现一个模仿UP主弹幕控制的直播间功能

    2023-02-24 18:13:27
  • HTML5 的五个激动人心的特性

    2009-01-02 17:36:00
  • Javascript中Eval函数的使用

    2024-03-24 19:55:23
  • Go语言中嵌入C语言的方法

    2024-04-25 15:05:50
  • Python开发毕设案例之桌面学生信息管理程序

    2021-03-02 14:56:08
  • Python 用户输入和while循环的操作

    2023-07-22 22:17:33
  • python中dict获取关键字与值的实现

    2022-03-11 14:00:42
  • mysql 中文乱码 解决方法集锦

    2024-01-28 06:05:29
  • 如何在pycharm中安装第三方包

    2021-10-13 21:30:01
  • 总结用Pdb库调试Python的方式及常用的命令

    2023-03-11 02:09:53
  • python正则表达式匹配IP代码实例

    2022-01-03 00:25:52
  • 使用Python实现将list中的每一项的首字母大写

    2023-01-07 15:05:04
  • Python动态导入模块的方法实例分析

    2022-06-08 17:56:45
  • 账户名和密码漏输或误输的文字提示

    2009-06-24 14:28:00
  • PyCharm设置中文(汉化与解除汉化)的方法

    2021-02-04 19:11:30
  • Python实现将数据写入netCDF4中的方法示例

    2023-12-30 15:51:18
  • asp之家 网络编程 m.aspxhome.com