Go test 命令行参数

前言

go test有非常丰富的参数,一些参数用于控制测试的编译,另一些参数控制测试的执行。

有关测试覆盖率、vet和pprof相关的参数先略过,我们在讨论相关内容时再详细介绍。

控制编译的参数

-args

指示go test把-args后面的参数带到测试中去。具体的测试函数会跟据此参数来控制测试流程。

-args后面可以附带多个参数,所有参数都将以字符串形式传入,每个参数做为一个string,并存放到字符串切片中。

// TestArgs 用于演示如何解析-args参数
func TestArgs(t *testing.T) {
    if !flag.Parsed() {
        flag.Parse()
    }

    argList := flag.Args() // flag.Args() 返回 -args 后面的所有参数,以切片表示,每个元素代表一个参数
    for _, arg := range argList {
        if arg == "cloud" {
            t.Log("Running in cloud.")
        }else {
            t.Log("Running in other mode.")
        }
    }
}

执行测试时带入参数:

E:\OpenSource\GitHub\RainbowMango\GoExpertProgrammingSourceCode\GoExpert\src\gotest>go test -run TestArgs -v -args "cloud"
TestMain setup.
=== RUN   TestArgs
--- PASS: TestArgs (0.00s)
    unit_test.go:28: Running in cloud.
PASS
TestMain tear-down.
ok      gotest  0.353s

通过参数-args指定传递给测试的参数。

-json

-json 参数用于指示go test将结果输出转换成json格式,以方便自动化测试解析使用。

示例如下:

E:\OpenSource\GitHub\RainbowMango\GoExpertProgrammingSourceCode\GoExpert\src\gotest>go test -run TestAdd -json
{"Time":"2019-02-28T15:46:50.3756322+08:00","Action":&#
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go 语言中,你可以通过在测试文件中定义带有 `testing.T` 参数的函数来编写测试用例。这些测试函数的名称必须以 `Test` 开头,例如: ```go func TestMyFunc(t *testing.T) { // ... } ``` 在测试文件中,你还可以定义带有 `testing.B` 参数的基准测试函数,名称必须以 `Benchmark` 开头,例如: ```go func BenchmarkMyFunc(b *testing.B) { for i := 0; i < b.N; i++ { // ... } } ``` 在测试函数中,你可以使用 `t.Run` 方法来运其他测试函数,例如: ```go func TestMySuite(t *testing.T) { t.Run("TestMyFunc1", func(t *testing.T) { // ... }) t.Run("TestMyFunc2", func(t *testing.T) { // ... }) } ``` 此外,你还可以在命令中指定一些自定义参数来运测试,例如: ```bash go test -run TestMyFunc -v ``` 这将只运名称为 `TestMyFunc` 的测试函数,并输出详细信息。你还可以通过 `-args` 参数传递自定义参数,例如: ```bash go test -args -myflag=true -myarg=123 ``` 这将在测试函数中获取 `os.Args` 列表,并包含额外的参数 `-myflag=true` 和 `-myarg=123`。在测试函数中,你可以使用 `flag` 包来解析这些参数。例如: ```go import "flag" func TestMyFunc(t *testing.T) { flag.Bool("myflag", false, "A boolean flag") flag.Int("myarg", 0, "An integer argument") flag.Parse() myflag := flag.Bool("myflag", false, "") myarg := flag.Int("myarg", 0, "") // ... } ``` 这样你就可以在测试函数中使用 `myflag` 和 `myarg` 变量来获取命令传递的参数了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值