基于GF
gtest
包
测试文件命名规则
测试文件必须以 *_test.go
结构方式命名 例如: demo_test.go
测试文件编写方式
函数名必须以 Test
开头参数 t *testing.T
示例
package demoTest
func TestDemo (t *testing.T) {
// 此处编写测试用例
}
gtest
内置断言函数
Assert
:检查两个值是否相等。
AssertEQ
:检查两个值是否相等,包括它们的数据类型。
AssertNE
:检查两个值是否不相等。
AssertNQ
:检查两个值是否不相等,包括它们的数据类型。
AssertGT
:检查一个值是否大于另一个值。注意,只有字符串、整数和浮点数类型可以使用AssertGT
进行比较,其他类型无效。
AssertGE
:检查一个值是否大于或等于另一个值。注意,只有字符串、整数和浮点数类型可以使用AssertGE
进行比较,其他类型无效。
AssertLT
:检查一个值是否小于另一个值。注意,只有字符串、整数和浮点数类型可以使用AssertLT
进行比较,其他类型无效。
AssertLE
:检查一个值是否小于或等于另一个值。注意,只有字符串、整数和浮点数类型可以使用AssertLE
进行比较,其他类型无效。
AssertIN
:检查一个值是否包含在另一个值中。expect
应该是一个切片,而value
可以是一个切片或基本类型变量。
AssertNI
:检查一个值是否不包含在另一个值中。expect
应该是一个切片,而value
可以是一个切片或基本类型变量。
AssertNil
:断言一个值是否为nil
。
Error
:用给定的消息触发一个错误。
Fatal
:将消息打印到标准错误并退出进程。
编写示例
func TestUrlToBase64ImageFromWebApi(t *testing.T) {
go gtest.C(t, func(t *gtest.T) {
s := g.Server()
s.SetAddr("127.0.0.1:8231")
s.BindHandler("/test_img", func(r *ghttp.Request) {
base64, err := lib.GetUrlImgBase64("http://aaa.com", 0)
t.AssertNil(err)
r.Response.WriteExit(base64)
})
s.Run()
})
time.Sleep(1 * time.Second)
get, err := g.Client().Discovery(nil).Get(gctx.New(), "http://127.0.0.1:8231/test_img")
gtest.AssertNil(err)
gtest.Assert(get.ReadAllString(), "")
}
编写用例的好处
- 确保代码质量:编写测试用例可以帮助确保代码的质量和正确性。通过自动运行测试用例,您可以捕获潜在的错误和bug,确保代码按照预期工作。
- 快速反馈:测试用例可以迅速提供有关代码更改的反馈。如果您修改了代码并且测试用例失败,您会立即知道哪里出了问题,从而可以快速解决问题,而不必手动测试每个功能。
- 维护和重构:在进行代码维护或重构时,测试用例是非常有用的。它们可以帮助您确保修改不会破坏现有功能,并且可以提供保护,防止不小心引入新问题。
- 团队协作:测试用例可以作为文档,帮助团队成员理解代码的预期行为。这对于团队协作和代码审查非常有用。
- 自动化测试:测试用例可以自动运行,因此可以在持续集成(CI)和持续交付(CD)流程中自动执行。这有助于确保每个代码提交都经过全面的测试。
- 节省时间:虽然编写测试用例需要一些额外的工作,但它们通常可以帮助您在开发的后期节省大量时间,因为您不必手动测试每个功能。
- 信心和安全感:编写测试用例可以提供对代码的信心和安全感。它们可以让您知道代码在各种情况下都能正常工作,而不仅仅是在您当前的测试场景下。
- 代码文档:测试用例可以作为代码的文档,向其他开发人员展示如何正确使用和交互代码。
评论区