goconvey是一款针对Golang的测试框架,可以管理和运行测试用例,同时提供了丰富的断言函数,并支持很多 Web 界面特性。

导包

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 ASo 1Convey BSo 2Convey CSo 3

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

代码示例

1.测试x++

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

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

GetSumScore函数实现:

type Student struct {ID    int64Name  stringAge   int8Major stringScore int
}// 返回这些学生的分数总和
func GetSumScore(students []Student) int {total := 0for _, 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 = 10score := GetSumScore(students)convey.So(score, convey.ShouldEqual, 110)})})
}

golang-goconvey单元测试相关推荐

  1. [Golang] GoConvey测试框架使用指南

    GoConvey 是一款针对Golang的测试框架,可以管理和运行测试用例,同时提供了丰富的断言函数,并支持很多 Web 界面特性. GoConvey 网站 : http://smartystreet ...

  2. Golang后台单元测试实践

    文章目录 Why单元测试 单元测试的时机 编码前:TDD 编码后:存量 与编码同步进行:增量 Golang单测框架选型 & 示例 golang原生testing框架 特点 示例 扩展:Tabl ...

  3. Golang之单元测试

    文件名必须以_test.go结尾 使用go test 执行单元测试 例 package mainfunc add(a, b int) int {return a + b } func sub(a, b ...

  4. Golang笔记——单元测试

    单元测试 先看一个需求 在我们工作中,我们会遇到这样的情况,就是去确认一个函数,或者一个模块的结果是否正确, 如: 传统的方法 传统的方式来进行测试 在 main 函数中,调用 addUpper 函数 ...

  5. golang mysql 单元测试_golang 之单元测试

    测试 测试是自动化测试的简称,即编写简单的程序来确保程序(产品代码)在测试中针对特定输入产生预期的输出.Go的测试方法看上去相对比较低级,它依赖于命令go test和一些能用go test运行的测试函 ...

  6. golang mysql单元测试_golang test测试使用

    1.创建测试文件夹mysql,文件夹下的go文件的package必须与文件夹名一致(不然会识别不到) 2.创建需要测试的文件mysql.go(使用github.com/go-sql-driver/my ...

  7. Golang 单元测试详尽指引

    文末有彩蛋. 作者:yukkizhang,腾讯 CSIG 专项技术测试工程师 本篇文章站在测试的角度,旨在给行业平台乃至其他团队的开发同学,进行一定程度的单元测试指引,让其能够快速的明确单元测试的方式 ...

  8. ​手把手教你如何进行 Golang 单元测试

    作者:stevennzhou,腾讯 PCG 前端开发工程师 本篇是对单元测试的一个总结,通过完整的单元测试手把手教学,能够让刚接触单元测试的开发者从整体上了解一个单元测试编写的全过程.最终通过两个问题 ...

  9. golang 单元测试和性能测试

    单元测试 单元测试(Unit Tests, UT) 是一个优秀项目不可或缺的一部分,特别是在一些频繁变动和多人合作开发的项目中尤为重要.你或多或少都会有因为自己的提交,导致应用挂掉或服务宕机的经历.比 ...

  10. golang及beego框架单元测试小结

    golang及beego框架单元测试小结   单元测试是保证开发质量的一个重要手段,提及golang开发,要保证开发质量,则难以回避单元测试的使用.golang开发语言有原生提供单元测试相关代码及工具 ...

最新文章

  1. 群论中的拉格朗日定理(子群的阶必然能整除群阶---数学
  2. 用Cordova打包Vue-vux项目
  3. java byte 循环左移 循环右移 rotateLeft rotateRight
  4. 成功解决 raise RuntimeError(“The JPMML-SkLearn conversion application has failed. The Java executable
  5. java卡片布局源码_Java编程使用卡片布局管理器示例【基于swing组件】
  6. logback的FileAppender
  7. C#调用SSIS包及读取DataReader目标
  8. Spring MVC中@Controller和@RequestMapping注解详解
  9. 线程安全与synchronized
  10. 【?异或】LeetCode 260. Single Number III
  11. 随时发生的网络攻击怎么防?这是一场网络安全的全民保卫战!
  12. 台式机linux连wifi,台式电脑怎么用wifi八种方法解决
  13. 手把手教你如何进行内网渗透
  14. excel文件撤销工作表保护
  15. Python中过滤列表中全部奇数
  16. 算法题:岛屿最大面积
  17. zstu新生赛 Problem A: Baby Coins(折半枚举+二分)
  18. uniapp 引入阿里矢量图标库的详细步骤及踩坑经历
  19. 华为云 内容审核API调用 前端 js uni-app
  20. 微信小程序授权登录和获取手机号功能(详细)

热门文章

  1. 高速串口通信稳定_长虹配套珠峰5G通信装备 保障直播信号稳定高速传输
  2. python小游戏——推箱子代码开源
  3. 【教学类-18-01】20221123《蒙德里安“红黄蓝黑格子画”-A4横板》(大班)
  4. iOS培训之iOS 8正式发布:增加多个新功能
  5. java版mc多少钱_我的世界Java版20w48a版本
  6. SQL yog解除30天试用限制
  7. 使用 Mybatis-Plus 进行一对多关联查询
  8. 什么是ePass3000
  9. 【Mysql】图解左、右、内与全连接
  10. imp-00017 oracle2298,acquireincrement