格式:
func BenchmarkXxx(b *testing.B)
简单代码:
package examples
import (
"io/ioutil"
"net/http"
"testing"
)
// 测试并发效率
func BenchmarkLoopsParallel(b *testing.B) {
b.RunParallel(func(pb *testing.PB) { //并发
for pb.Next() {
resp, err := http.Get("http://10.10.200.128:8080/image?t=MDA")
if err != nil {
// handle error
}
cookies := resp.Cookies()
verify_key := ""
for _, v := range cookies {
if v.Name == "VERIFY_KEY" {
verify_key = v.Value
}
}
if err != nil {
// handle error
}
defer resp.Body.Close()
if verify_key == "" {
b.Fail()
}
}
})
}
运行
go test -bench="."
- -parallel 50 设置并发
- -count n 设置次数
testing.T
判定失败接口
- Fail 失败继续
- FailNow 失败终止
打印信息接口
- Log 数据流 (cout 类似)
- Logf format (printf 类似)
- SkipNow 跳过当前测试
- Skiped 检测是否跳过
综合接口产生:
- Error / Errorf 报告出错继续 [ Log / Logf + Fail ]
- Fatel / Fatelf 报告出错终止 [ Log / Logf + FailNow ]
- Skip / Skipf 报告并跳过 [ Log / Logf + SkipNow ]
testing.B
首先 , testing.B 拥有testing.T 的全部接口。
- SetBytes( i uint64) 统计内存消耗, 如果你需要的话。
- SetParallelism(p int) 制定并行数目。
- StartTimer / StopTimer / ResertTimer 操作计时器
testing.PB
- Next() 接口 。 判断是否继续循环
注意点
- 文件需已test.go结尾
本着资源共享的原则,欢迎各位朋友在此基础上完善,并进一步分享,让我们的实现更加优雅。如果有任何疑问和需要进一步交流可以留言沟通
Testner创始人(testner.club) Sea