linux测试api,testing - 测试基本使用接口

testing - 测试基本使用接口

当你写完一个函数,结构体,main之后,你下一步需要的就是测试了。testing包提供了很简单易用的测试包。

写一个基本的测试用例

测试文件的文件名需要以_test.go为结尾,测试用例需要以TestXxxx的样式存在。

比如我要测试utils包的sql.go中的函数:

func GetOne(db *sql.DB, query string, args ...interface{}) (map[string][]byte, error) {

就需要创建一个sql_test.go

package utils

import (

"database/sql"

_ "fmt"

_ "github.com/go-sql-driver/mysql"

"strconv"

"testing"

)

func Test_GetOne(t *testing.T) {

db, err := sql.Open("mysql", "root:123.abc@tcp(192.168.33.10:3306)/test")

defer func() {

db.Close()

}()

if err != nil {

t.Fatal(err)

}

// 测试empty

car_brand, err := GetOne(db, "select * from user where id = 999999")

if (car_brand != nil) || (err != nil) {

t.Fatal("emtpy测试错误")

}

}

testing的测试用例形式

测试用例有四种形式:

TestXxxx(t testing.T) // 基本测试用例

BenchmarkXxxx(btesting.B) // 压力测试的测试用例

Example_Xxx() // 测试控制台输出的例子

TestMain(m *testing.M) // 测试Main函数

给个Example的例子:(Example需要在最后用注释的方式确认控制台输出和预期是不是一致的)

func Example_GetScore() {

score:= getScore(100, 100, 100, 2.1)

fmt.Println(score)

// Output:

// 31.1

}

testing的变量

gotest的变量有这些:

test.short : 一个快速测试的标记,在测试用例中可以使用testing.Short()来绕开一些测试

test.outputdir : 输出目录

test.coverprofile : 测试覆盖率参数,指定输出文件

test.run : 指定正则来运行某个/某些测试用例

test.memprofile : 内存分析参数,指定输出文件

test.memprofilerate : 内存分析参数,内存分析的抽样率

test.cpuprofile : cpu分析输出参数,为空则不做cpu分析

test.blockprofile : 阻塞事件的分析参数,指定输出文件

test.blockprofilerate : 阻塞事件的分析参数,指定抽样频率

test.timeout : 超时时间

test.cpu : 指定cpu数量

test.parallel : 指定运行测试用例的并行数

testing包内的结构

B : 压力测试

BenchmarkResult : 压力测试结果

Cover : 代码覆盖率相关结构体

CoverBlock : 代码覆盖率相关结构体

InternalBenchmark : 内部使用的结构

InternalExample : 内部使用的结构

InternalTest : 内部使用的结构

M : main测试使用的结构

PB : Parallel benchmarks 并行测试使用结果

T : 普通测试用例

TB : 测试用例的接口

testing的通用方法

T结构内部是继承自common结构,common结构提供集中方法,是我们经常会用到的:

当我们遇到一个断言错误的时候,我们就会判断这个测试用例失败,就会使用到:

Fail : case失败,测试用例继续

FailedNow : case失败,测试用例中断

当我们遇到一个断言错误,只希望跳过这个错误,但是不希望标示测试用例失败,会使用到:

SkipNow : case跳过,测试用例不继续

当我们只希望在一个地方打印出信息,我们会用到:

Log : 输出信息

Logf : 输出有format的信息

当我们希望跳过这个用例,并且打印出信息:

Skip : Log + SkipNow

Skipf : Logf + SkipNow

当我们希望断言失败的时候,测试用例失败,打印出必要的信息,但是测试用例继续:

Error : Log + Fail

Errorf : Logf + Fail

当我们希望断言失败的时候,测试用例失败,打印出必要的信息,测试用例中断:

Fatal : Log + FailNow

Fatalf : Logf + FailNow

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值