• 下载convey库:

go get github.com/smartystreets/goconvey

  • 测试函数

some_functions.go

package goconveydemoimport "errors"func IsEqual(a, b int) bool{return a == b
}func IsEqualWithErr(a, b int) (bool, error){if a > b {return false, errors.New("over")} else if a < b{return false, errors.New("under")} else{return true, nil}
}
  • 测试用例

goconvey_test.go

package goconveydemoimport (. "github.com/smartystreets/goconvey/convey""testing"
)func TestSpec(t *testing.T) {// Only pass t into top-level Convey callsConvey("Given some integer with a starting value", t, func() {x := 1Convey("When the integer is incremented", func() {x++Convey("The value should be greater by one", func() {So(x, ShouldEqual, 2)})})})
}func TestIsEqual(t *testing.T){Convey("1 == 1", t, func() {So(IsEqual(1, 1), ShouldBeTrue)})
}func TestIsEqualWithErr(t *testing.T){Convey("IsEqualWithErr", t, func(){Convey("2 > 1, over", func(){ok, err := IsEqualWithErr(2, 1)So(ok, ShouldBeFalse)So(err, ShouldNotBeNil)})Convey("1 < 2, under", func(){ok, err := IsEqualWithErr(1, 2)So(ok, ShouldBeFalse)So(err, ShouldNotBeNil)})Convey("1 = 1, equal", func(){ok, err := IsEqualWithErr(1, 1)So(ok, ShouldBeTrue)So(err, ShouldBeNil)})})
}
  • 运行$GOPATH/bin目录下生成的goconvey程序,打开http://localhost:8080

  • 运行go test -v

  •  PS:golang test单元测试规范

  • 文件名必须是_test.go结尾的,这样在执行go test的时候才会执行到相应的代码
  • 你必须import testing这个包
  • 所有的测试用例函数必须是Test开头
  • 测试用例会按照源代码中写的顺序依次执行
  • 测试函数TestXxx()的参数是testing.T,我们可以使用该类型来记录错误或者是测试状态
  • 测试格式:func TestXxx (t *testing.T),Xxx部分可以为任意的字母数字的组合,但是首字母不能是小写字母[a-z],例如Testintdiv是错误的函数名。
  • 函数中通过调用testing.TErrorErrorfFailNowFatalFatalIf方法,说明测试不通过,调用Log方法用来记录测试的信息。
  • 注意

当gotest运行具体文件时,需要把依赖的文件一起打出来,否则会报错。

如本例

go test -v goconvey_test.go//输出
# command-line-arguments [command-line-arguments.test]
./goconvey_test.go:25:6: undefined: IsEqual
./goconvey_test.go:32:15: undefined: IsEqualWithErr
./goconvey_test.go:38:15: undefined: IsEqualWithErr
./goconvey_test.go:44:15: undefined: IsEqualWithErr
FAIL    command-line-arguments [build failed]

正确写法如下

go test -v goconvey_test.go some_functions.go//输出
=== RUN   TestSpecGiven some integer with a starting value When the integer is incremented The value should be greater by one ✔1 total assertion--- PASS: TestSpec (0.00s)
=== RUN   TestIsEqual1 == 1 ✔2 total assertions--- PASS: TestIsEqual (0.00s)
=== RUN   TestIsEqualWithErrIsEqualWithErr 2 > 1, over ✔✔1 < 2, under ✔✔1 = 1, equal ✔✔8 total assertions--- PASS: TestIsEqualWithErr (0.00s)
PASS
ok      command-line-arguments  0.006s

【GO】22.go 测试库 convey相关推荐

  1. oracle 测试库搭建,Oracle Study之--通过RMAN克隆测试库

    Oracle Study之--通过RMAN克隆测试库 通过使用数据库备份,DBA可以在同一服务器或其它服务器上建立副本数据库.这个副本数据库可以和主数据库有相同的名称(拷贝)或与主数据库名称不同(克隆 ...

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

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

  3. 测试设计中需要考虑的22种测试类型

    测试设计中需要考虑的22种测试类型 测试设计中需要考虑的22种测试类型 纪玉春 来自21CMM 黑盒测试:不基于内部设计和代码的任何知识,而是基于需求和功能性. 白盒测试:基于一个应用代码的内部逻辑知 ...

  4. react jest测试_如何使用React测试库和Jest开始测试React应用

    react jest测试 Testing is often seen as a tedious process. It's extra code you have to write, and in s ...

  5. 功能安全 李艳文_中国汽车功能安全测试库首次成果发布会成功召开

    2019年9月25-26日,汽车工程研究院(以下简称"工程院")牵头搭建的中国汽车功能安全测试库(以下简称"测试库")首次成果发布会在江西上饶"汽标委 ...

  6. 生产库,查询库和测试库的区别

    对于什么是生产库,查询库,数据库不是很了解,经过一番了解,终于清楚了三者之间的关系和区别. **生产库:**顾名思义,就是内容采集录入后的后台库,一般公司都会将生产库对接一个程序化的可视操作系统,通过 ...

  7. 快速将正式环境的数据同步到本地测试库

    利用 备份还原 快速将正式环境的数据同步到本地测试库: 1.远程连接到正式环境后,复制一份当天数据库的备份:如果当天还没备份,可以自行备份或者取前一天的. 注:如果不知道备份文件存放路径,直接在该数据 ...

  8. 将正式数据库中的表与测试库同步

    刚接触项目的实习生,积累经验,欢迎交流 今天遇到了一个问题,就是将正式库数据与测试库同步 直接上解决办法: 方法一: 在正式库服务器上使用exp命令行产生dmp文件,使用imp命令导入测试库 方法二: ...

  9. Robot Framework自动化测试教程-通过RIDE创建工程、测试套、测试用例、测试资源、变量文件,引入测试库

    1. 创建测试工程 RIDE工具中有Project概念,实际上Robot Framework中是没有工程的概念,可以理解为最顶层的测试套. 1.1. 新建测试工程 点击 File–>New Pr ...

最新文章

  1. Spring-JDK Timer 以及在Spring(4.0以下)中使用JDK Timer
  2. Eigen教程(8)
  3. How to suppress email sending when operating on Activity
  4. 管理端口_内网渗透 | 红蓝对抗:Windows利用WinRM实现端口复用打造隐蔽后门
  5. 详细对比9门主流编程语言
  6. windows下mysql解压包安装
  7. java web流量阀值_Javaweb应用使用限流处理大量的并发请求详解
  8. Android面试:说一下 LiveData 的 postValue ?与SetValue有什么区别?连续调用会有什么问题?为什么?
  9. 镁光硬盘测试软件,镁光固态硬盘怎么样
  10. Flixel Dame 坦克大战(一)地图
  11. 6.Paper小结——《A Privacy-Preserving and Verifiable FederatedLearning Scheme》
  12. 什么是 AI(人工智能(Artificial Intelligence)
  13. 云原生Java架构实战 K8s+Docker+KubeSphere+DevOps(上)
  14. 毕业三年,我从鉴黄师转行到阿里做前端
  15. webbrowser php,webBrowser C#是实现的网页浏览器,能够打开各种 ,调用 搜索。 WEB(ASP,PHP,...) 238万源代码下载- www.pudn.com...
  16. 微信支付 生成付款二维码链接 并生成支付二维码图片 .net C#
  17. 实验报告总结_你的年终总结,决定了你在企业的未来
  18. 基于STM32F103系列的MAX31865读取PT100温控器设计与实现
  19. @public @private @protected @package
  20. TIA博途Wincc中自定义配方画面的具体方法示例

热门文章

  1. 『原创』ShopEx 4.7.2 0DAY 利用工具
  2. 360杀毒会导致mingw编译ffmpeg出错??
  3. 名创优品三大法宝制胜,四大病因成疾?
  4. 解决iPhone4拆机后SIM卡显示无服务的故障
  5. android编辑框边框设计,Android设计规范 Material Design-Components(17文本框)
  6. 该怎么选择明渠流量计堰槽
  7. Pixhawk进阶开发
  8. 2019上海到南京的医疗保险转移
  9. pycharm下引用另外一个文件报错(如何引用另外一个文件)
  10. Linux系统下锐捷客户端连接方法