【GO】22.go 测试库 convey
下载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.T
的Error
,Errorf
,FailNow
,Fatal
,FatalIf
方法,说明测试不通过,调用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相关推荐
- oracle 测试库搭建,Oracle Study之--通过RMAN克隆测试库
Oracle Study之--通过RMAN克隆测试库 通过使用数据库备份,DBA可以在同一服务器或其它服务器上建立副本数据库.这个副本数据库可以和主数据库有相同的名称(拷贝)或与主数据库名称不同(克隆 ...
- Robot Framework(十四) 扩展RobotFramework框架——创建测试库
4.1创建测试库 Robot Framework的实际测试功能由测试库提供.有许多现有的库,其中一些甚至与核心框架捆绑在一起,但仍然经常需要创建新的库.这个任务并不复杂,因为正如本章所示,Robot ...
- 测试设计中需要考虑的22种测试类型
测试设计中需要考虑的22种测试类型 测试设计中需要考虑的22种测试类型 纪玉春 来自21CMM 黑盒测试:不基于内部设计和代码的任何知识,而是基于需求和功能性. 白盒测试:基于一个应用代码的内部逻辑知 ...
- 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 ...
- 功能安全 李艳文_中国汽车功能安全测试库首次成果发布会成功召开
2019年9月25-26日,汽车工程研究院(以下简称"工程院")牵头搭建的中国汽车功能安全测试库(以下简称"测试库")首次成果发布会在江西上饶"汽标委 ...
- 生产库,查询库和测试库的区别
对于什么是生产库,查询库,数据库不是很了解,经过一番了解,终于清楚了三者之间的关系和区别. **生产库:**顾名思义,就是内容采集录入后的后台库,一般公司都会将生产库对接一个程序化的可视操作系统,通过 ...
- 快速将正式环境的数据同步到本地测试库
利用 备份还原 快速将正式环境的数据同步到本地测试库: 1.远程连接到正式环境后,复制一份当天数据库的备份:如果当天还没备份,可以自行备份或者取前一天的. 注:如果不知道备份文件存放路径,直接在该数据 ...
- 将正式数据库中的表与测试库同步
刚接触项目的实习生,积累经验,欢迎交流 今天遇到了一个问题,就是将正式库数据与测试库同步 直接上解决办法: 方法一: 在正式库服务器上使用exp命令行产生dmp文件,使用imp命令导入测试库 方法二: ...
- Robot Framework自动化测试教程-通过RIDE创建工程、测试套、测试用例、测试资源、变量文件,引入测试库
1. 创建测试工程 RIDE工具中有Project概念,实际上Robot Framework中是没有工程的概念,可以理解为最顶层的测试套. 1.1. 新建测试工程 点击 File–>New Pr ...
最新文章
- Spring-JDK Timer 以及在Spring(4.0以下)中使用JDK Timer
- Eigen教程(8)
- How to suppress email sending when operating on Activity
- 管理端口_内网渗透 | 红蓝对抗:Windows利用WinRM实现端口复用打造隐蔽后门
- 详细对比9门主流编程语言
- windows下mysql解压包安装
- java web流量阀值_Javaweb应用使用限流处理大量的并发请求详解
- Android面试:说一下 LiveData 的 postValue ?与SetValue有什么区别?连续调用会有什么问题?为什么?
- 镁光硬盘测试软件,镁光固态硬盘怎么样
- Flixel Dame 坦克大战(一)地图
- 6.Paper小结——《A Privacy-Preserving and Verifiable FederatedLearning Scheme》
- 什么是 AI(人工智能(Artificial Intelligence)
- 云原生Java架构实战 K8s+Docker+KubeSphere+DevOps(上)
- 毕业三年,我从鉴黄师转行到阿里做前端
- webbrowser php,webBrowser C#是实现的网页浏览器,能够打开各种 ,调用 搜索。 WEB(ASP,PHP,...) 238万源代码下载- www.pudn.com...
- 微信支付 生成付款二维码链接 并生成支付二维码图片 .net C#
- 实验报告总结_你的年终总结,决定了你在企业的未来
- 基于STM32F103系列的MAX31865读取PT100温控器设计与实现
- @public @private @protected @package
- TIA博途Wincc中自定义配方画面的具体方法示例