Go语言测试库testify使用学习
简介
Testify是一个用于Go语言的测试库,它提供了一些实用的方法和断言,可以使我们轻松地编写清晰、灵活且有意义的测试。
安装
使用以下命令安装Testify:
go get github.com/stretchr/testify
常用的断言
Testify提供了许多有用的断言功能,以下是一些常用的:
- assert.Equal(),用于比较两个值是否相等,如果不相等则会输出错误信息、停止测试,并返回一个false值;
- assert.NotEqual(),用于比较两个值是否不相等;
- assert.Nil(),用于检查一个值是否为空,如果不为空则会输出错误信息、停止测试,并返回一个false值;
- assert.NotNil(),用于检查一个值是否不为空;
- assert.True(),用于检查一个表达式的结果是否为true,如果不是则会输出错误信息、停止测试,并返回一个false值;
- assert.False(),用于检查一个表达式的结果是否为false;
- assert.NoError(),用于检查是否没有出现错误;
- assert.Error(),用于检查是否出现了错误。
示例1:测试断言
package main
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestAdd(t *testing.T) {
a := 1
b := 2
c := a + b
assert.Equal(t, 3, c, "The sum should be 3")
}
func TestSub(t *testing.T) {
a := 2
b := 1
c := a - b
assert.NotEqual(t, 2, c, "The difference should not be 2")
}
func TestNil(t *testing.T) {
var a *int
assert.Nil(t, a, "The value of a should be nil")
}
func TestTrue(t *testing.T) {
a := 1
assert.True(t, a == 1, "a should be equal to 1")
}
func TestFalse(t *testing.T) {
a := 1
assert.False(t, a == 2, "a should not be equal to 2")
}
func TestNoError(t *testing.T) {
err := nil
assert.NoError(t, err, "There should be no error")
}
func TestError(t *testing.T) {
err := errors.New("error")
assert.Error(t, err, "There should be an error")
}
示例2:测试HTTP接口
package main
import (
"net/http"
"net/http/httptest"
"testing"
"github.com/stretchr/testify/assert"
)
func TestHTTPHandler(t *testing.T) {
handler := func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusOK)
w.Write([]byte("hello world"))
}
req, _ := http.NewRequest("GET", "/", nil)
rr := httptest.NewRecorder()
handler(rr, req)
assert.Equal(t, http.StatusOK, rr.Code, "handler returned wrong status code")
assert.Equal(t, "hello world", rr.Body.String(), "handler returned unexpected body")
}
以上就是测试库Testify的介绍和使用示例,用Testify进行单元测试,可以使我们的测试代码更加简洁明了,易于维护和更新,同时也能够让我们更加自信地发布我们的代码。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Go语言测试库testify使用学习 - Python技术站