GoConvey测试框架

June 27, 2022

这篇文章介绍了GoConvey测试框架的使用。GoConvey是一款针对Golang的测试框架,可以管理和运行测试用例,提供丰富的断言函数,并支持Web界面特性。文章详细介绍了如何安装GoConvey,如何编写测试用例,并展示了测试用例的执行结果。同时,文章还提供了一些编写测试用例的建议和参考链接。

可以管理和运行测试用例,同时提供了丰富的断言函数,并支持很多 Web 界面特性。

Golang虽然自带了单元测试功能,并且在GoConvey框架诞生之前也出现了许多第三方测试框架,但没有一个测试框架像GoConvey一样能够让程序员如此简洁优雅的编写测试代码。

安装

go get github.com/smartystreets/goconvey

案例

package convey

import (
	"testing"

	. "github.com/smartystreets/goconvey/convey"
)


func ShouldCustomize(actual interface{}, expected ...interface{}) string {
	if actual == "ok" && expected[0] == "ok" {
        return ""
    } else {
        return "Fail!!!"
    }
}

func TestConvey(t *testing.T) {
	Convey("test convey == convey", t, func() {
		So("convey", ShouldEqual, "convey")
	})

	Convey("test convey == convery", t, func() {
		So("convey", ShouldEqual, "convery")
	})
    
    // 定制断言函数

	Convey("test customize should: ", t, func ()  {
		So("ok", ShouldCustomize, "ok")
		So("ok", ShouldCustomize, "no")
	})
}

执行命令

[iarno@xxx convey]$ go test -v .
=== RUN   TestConvey

  test convey == convey 


1 total assertion


  test convey == convery 


Failures:

  * /hellogolang/convey/convey_test.go 
  Line 24:
  Expected: 'convery'
  Actual:   'convey'
  (Should be equal)
  Diff:     'convery'


2 total assertions


  test customize should: ✔✘


Failures:

  * /hellogolang/convey/convey_test.go 
  Line 29:
  Fail!!!


4 total assertions

--- FAIL: TestConvey (0.00s)
FAIL
FAIL  

小结

  • import goconvey包时,前面加点号”.",以减少冗余的代码
  • 测试函数的名字必须以Test开头,而且参数类型必须为*testing.T
  • 每个测试用例必须使用Convey语句包裹起来,推荐使用Convey语句的嵌套,即一个函数有一个或多个测试函数,一个测试函数嵌套两层或三层Convey语句:当使用非BDD风格来写测试用例时,一个测试函数由两层Convey语句组成(第一层Convey语句对应目标函数,第二层Convey语句对应测试用例)

参考

https://github.com/smartystreets/goconvey

https://www.jianshu.com/p/e3b2b1194830

Go

IARNO

服务端开发

Gomonkey测试框架

使用tcpdump查看域名DNS解析过程