文章目录

  • 简介
    • 1. assert
    • 2. mock
    • 3. suite
  • 示例
    • 例子1:使用assert
    • 例子2:使用require
  • 小结

简介

testify可以说是最流行的(从 GitHub star 数来看)Go 语言测试库了。testify提供了很多方便的函数帮助我们做assert和错误信息输出。使用标准库testing,我们需要自己编写各种条件判断,根据判断结果决定输出对应的信息。

testify核心有三部分内容:

  • assert:断言;
  • mock:测试替身;
  • suite:测试套件。

1. assert

assert 子库提供了便捷的断言函数,可以大大简化测试代码的编写。总的来说,它将之前需要判断 + 信息输出的模式:

if got != expected {t.Errorf("Xxx failed expect:%d got:%d", got, expected)
}

简化为一行断言代码:

assert.Equal(t, got, expected, "they should be equal")

结构更清晰,更可读。熟悉其他语言测试框架的开发者对assert的相关用法应该不会陌生。此外,assert中的函数会自动生成比较清晰的错误描述信息:

func TestEqual(t *testing.T) {var a = 100var b = 200assert.Equal(t, a, b, "")
}

2. mock

testify提供了对 Mock 的简单支持。Mock 简单来说就是构造一个仿对象,仿对象提供和原对象一样的接口,在测试中用仿对象来替换原对象。这样我们可以在原对象很难构造,特别是涉及外部资源(数据库,访问网络等)。例如,我们现在要编写一个从一个站点拉取用户列表信息的程序,拉取完成之后程序显示和分析。如果每次都去访问网络会带来极大的不确定性,甚至每次返回不同的列表,这就给测试带来了极大的困难。我们可以使用 Mock 技术。

3. suite

testify提供了测试套件的功能(TestSuite),testify测试套件只是一个结构体,内嵌一个匿名的suite.Suite结构。测试套件中可以包含多个测试,它们可以共享状态,还可以定义钩子方法执行初始化和清理操作。钩子都是通过接口来定义的,实现了这些接口的测试套件结构在运行到指定节点时会调用对应的方法。

示例

我主要用两个包 assert package,require package,他们的唯一差别就是require的函数会直接导致case结束,而assert虽然也标记为case失败,但case不会退出,而是继续往下执行。看一个例子:

例子1:使用assert

package mainimport ("testing""github.com/stretchr/testify/assert")func TestCase1(t *testing.T) {name := "Bob"age := 10assert.Equal(t, "bob", name)assert.Equal(t, 20, age)
}

执行:

$ go test
--- FAIL: TestCase1 (0.00s)assertions.go:254: Error Trace:    main_test.go:13Error:          Not equal: expected: "bob"actual  : "Bob"Test:           TestCase1assertions.go:254: Error Trace:    main_test.go:14Error:          Not equal: expected: 20actual  : 10Test:           TestCase1
FAIL
exit status 1
FAIL    testUT  0.009s

在这个例子中我们使用的是assert,可以看到两个assert.Equal()指令都被执行了。

例子2:使用require

小结

参考: https://www.jb51.net/article/256517.htm
https://www.jianshu.com/p/ad46bbbf877c

Go:测试库testify简介相关推荐

  1. 【GO】23.Golang 测试库 testify

    下载testify库 go get github.com/stretchr/testify 测试方法 package goconveydemoimport "errors"func ...

  2. Py之imblearn:imblearn/imbalanced-learn库的简介、安装、使用方法之详细攻略

    Py之imblearn:imblearn/imbalanced-learn库的简介.安装.使用方法之详细攻略 目录 imblearn/imbalanced-learn库的简介 imblearn/imb ...

  3. Py之GraphLab:graphlab库的简介、安装、使用方法之详细攻略

    Py之GraphLab:graphlab库的简介.安装.使用方法之详细攻略 目录 graphlab库的简介 1.GraphLab是什么 2.GraphLab的五大特点 3.为什么需要GraphLab ...

  4. Py之fvcore:fvcore库的简介、安装、使用方法之详细攻略

    Py之fvcore:fvcore库的简介.安装.使用方法之详细攻略 目录 fvcore库的简介 fvcore库的安装 fvcore库的使用方法 1.基础用法 fvcore库的简介 fvcore是一个轻 ...

  5. Py之simplejson:simplejson库的简介、安装、使用方法之详细攻略

    Py之simplejson:simplejson库的简介.安装.使用方法之详细攻略 目录 simplejson库的简介 simplejson库的安装 simplejson库的使用方法 1.基础用法 s ...

  6. Py之dlib:Python库之dlib库的简介、安装、使用方法详细攻略

    Py之dlib:Python库之dlib库的简介.安装.使用方法详细攻略 目录 dlib库的简介 dlib库的安装 dlib库的使用函数 0.利用dlib.get_frontal_face_detec ...

  7. Robot Framework(十四) 扩展RobotFramework框架——创建测试库

    4.1创建测试库 Robot Framework的实际测试功能由测试库提供.有许多现有的库,其中一些甚至与核心框架捆绑在一起,但仍然经常需要创建新的库.这个任务并不复杂,因为正如本章所示,Robot ...

  8. Py之scikit-learn:机器学习sklearn库的简介、六大基本功能介绍(数据预处理/数据降维/模型选择/分类/回归/聚类)、安装、使用方法(实际问题中如何选择最合适的机器学习算法)之详细攻略

    Py之scikit-learn:机器学习sklearn库的简介(组件/版本迭代).六大基本功能介绍(数据预处理/数据降维/模型选择/分类/回归/聚类).安装.使用方法(实际问题中如何选择最合适的机器学 ...

  9. react 路由重定向_如何测试与测试库的路由器重定向React

    react 路由重定向 React testing-library is very convenient to test React components rendering from props, ...

最新文章

  1. php 中continue break exit return 的区别
  2. 海南岛渔民捞出“鱼雷”,竟是他国间谍机器人
  3. Python 计算机视觉(十七)—— 基于KNN的图像分类
  4. 传统与敏捷开发的真正区别
  5. 需求阶段如何书写Use Case
  6. 外媒:苹果公司将在美国为其“苹果汽车”生产电池
  7. web后端本地开发(同步线上)环境搭建
  8. QTP自动化测试最佳实践
  9. 中华优秀传统文化教育的有效渗透
  10. 了解 SWFObject 2.0 应用
  11. windows QT+VS201环境安装
  12. zotero中的标准和规范应该用什么类型
  13. 产品人的归宿 · 之 · 创业维艰
  14. 第三章 集合的基本概念和运算
  15. 基于SSM框架实现的疫情统计系统
  16. 充分利用居室空间 让阳台尽显万种风情
  17. 计算机微机维修工四级理论知识试卷,计算机维修工中级理论知识试卷1.doc
  18. 2018年9月计算机二级考试《MS Office高级应用》基础自测卷
  19. vue 项目在ie浏览器的兼容问题
  20. 基于java实现bilibili视频爬虫

热门文章

  1. itunes在计算机中丢失,iTunes用户莫名丢失音乐文件 苹果将发布更新
  2. python程序性能监控
  3. RocketMQ-02
  4. Web3中文|USDC的“脱锚”是稳定币稳定性的终结吗?
  5. Nintendo Switch和《塞尔达传说:旷野之息》绝对是一种乐趣
  6. 2022-2028年中国知识产权行业竞争策略研究及未来前景展望报告
  7. [Papers]NSE, $u_3$, Lebesgue space [NNP, QM, 2002; Zhou, JMPA, 2005]
  8. linux安装git及使用
  9. 互联网等三行业跻身VC投资前三甲
  10. 平安金融云为互联网金融行业注入发展新动能