Golang测试框架goconvey进行单元测试流程介绍
作者:Sahm5k 发布时间:2024-02-09 04:21:27
标签:Golang,测试框架,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)
})
})
}
来源:https://blog.csdn.net/weixin_44866921/article/details/130742368


猜你喜欢
- 函数最重要的目的是方便我们重复使用相同的一段程序。将一些操作隶属于一个函数,以后你想实现相同的操作的时候,只用调用函数名就可以,而不需要重复
- 前言这次,我们要用Pygame写一个Pong游戏先看看效果:需要的模块:Pygame在python文件同目录下新建resources文件夹,
- 1.算法概述决策树算法是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策
- 当两个数包含小数进行运算的时候结果并不是正确的结果,而是出现了精度丢失的情况(小数点后面出现很多位)。问题所在:res.orderColor
- PIL中设计的几个基本概念1.通道(bands):即使图像的波段数,RGB图像,灰度图像以RGB图像为例:>>>from
- 或许你已经看过很多关于CSS3动画的技术,包括前端观察之前发表的一些,那么现在就情看一看CSS3动画的魅力吧。这里是一辑47个令人瞠目结舌的
- networkx返回图的邻接矩阵最近有用到关于邻接矩阵的一些问题,平时不太常用所以一直没注意到networkx里面的函数,权当笔记了,有兴趣
- 大家可能都不大熟悉关于pdb这个模块,实际上就是python中的内置模块,主要作用于命令行调试代码,下面我们将通过是哪个小结给大家详细介绍下
- 很荣幸您能看到这篇文章,相信通过标题打开这篇文章的都是对tensorflow感兴趣的,特别是对卷积神经网络在mnist手写识别这个实例感兴趣
- Python3标准库操作系统接口os模块提供了不少与操作系统相关联的函数。>>> import os>>>
- 1. 准备工作首先编写getHtml函数,传入markdown文本字符串,这里使用fs读取markdown文件内容,返回值是转换过后的字符串
- 技术选型公司现在需要开发移动端的h5,使用现在比较流行的vue 2.0开发,使用的脚手架是Vant2,网络访问使用的是axios,路由跳转使
- 一.虚拟机端1.找到mysql的配置文件:sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf按"
- JSP之表单提交get和post的详解及实例一 get和post的区别二 实战(post方式提交)1、login.jsp<%@ pag
- 前言今天查询一个数据字段一直提示字符无效,明明在数据库表字段中是存在的;查询后得知,数据库表字段为小写时,查询需要将字段名小写并加上双引号;
- 【人工智能项目】Python Flask搭建yolov3目标检测系统后端代码from flask import Flask, request
- 众所周知,vue可以用来开发移动端app,可以使用hbuilder将build好的vue打包成一个移动端app,但是用过之后就会发现,使用c
- 我就废话不多说了,大家还是直接看代码吧~'''Created on 2018-4-16'''
- 1、之前那个说淘宝交易评价“有问题”的文章已经有了一百多个评论。(某些开口就骂的评论已被删除)近期去评论的人都是从搜索引擎过来的,他们不是产
- 近些时间在开始学MySQL,安装挺顺利的,按照网上现成的教程就能安装成功。但是,在我开开心心地输入mysql -uroot -p再输入密码时