自学内容网 自学内容网

Go-知识测试-测试参数

1. -args

指示go test 把-args 后面的参数带到测试中去。具体的测试函数会根据此参数来控制测试流程。
-args后面可以附带多个参数,所有参数都将以字符串形式传入,每个参数作为一个string,并存放到字符串切片中。

import (
"flag"
"testing"
)

func TestArgs(t *testing.T) {
if !flag.Parsed() {
flag.Parse()
}
args := flag.Args()
for _, arg := range args {
t.Logf("arg: %s", arg)
}
}

使用 go test -v xx_test.go -args test hello world进行执行
在这里插入图片描述

2. -json

-json 参数用于指示go test将结果转换成json格式,便于在后续使用。
比如上面的例子go test -v xx_test.go -json -args test hello world
在这里插入图片描述

3. -o

-o 参数指定生成的二进制可执行程序,并执行测试,测试结束不会删除该程序。
没有此参数时,go test 生成的二进制可执行程序存放到临时目录中,执行结束便删除。
继续使用上述的例子
在这里插入图片描述

在这里插入图片描述

直接执行二进制程序
在这里插入图片描述

4. -bench

go test 默认不执行性能测试,使用-bench 参数才可以运行,而且只运行性能测试函数。
-bench 后面附加正则表达式,用于筛选需要执行的性能测试。如果要执行所有的性能测试,使用 . 作为正则。
这里的正则不是严格意义的正则,而是包含关系。
比如有如下三个性能测试:
func BenchmarkSlice(b *testing.B)
func BenchmarkSliceStr(b *testing.B)
func BenchmarkArray(b *testing.B)
如果使用go test -bench Slice ,那么会执行前两个,第三个不会被执行。
如果是子测试,那么是存在层级的:

func BenchmarkSub(b *testing.B){
    b.Run("name=1", benchSub1)
    b.Run("name=2", benchSub2)
    b.Run("n=3", benchSub3)
}

测试函数命名规则中,子测试的名字需要以父测试名字作为前缀并以/连接,上面的例子中实际上包含了4个测试:
Sub,Sub/name=1,Sub/name=2,Sub/n=3
如果想执行三个子测试,那么使用参数-bench Sub,如果只是想执行第一个,那么-bench Sub/name=1
如果想执行前两个,那么-bench Sub/name=
在这里插入图片描述

5. -benchtime

-benchtime s 指定每个性能测试的执行时间,如果不指定,那么默认执行1s.
在这里插入图片描述

6. -cpu

-cpu 参数提供了一个CPU个数的列表,提供此列表后,测试将按照这个列表指定的CPU数设置GOMAXPROCS并分别测试.
比如 -cpu 1,2 ,那么每个测试即将执行两次,一次是用1个CPU执行,另一次是用两个CPU执行。
在这里插入图片描述

示例测试不适用

7. -count

-count n 指定每个测试执行的次数,默认执行一次。
在这里插入图片描述

如果使用-count指定执行测试的同时还使用-cpu指定了多种CPU,那么测试将在每种CPU下均执行-count的次数。

示例测试不适用

8. -failfast

默认情况下,go test会执行所有匹配到的测试,并最后打印测试结果,无论成功或失败。
-failfast 指定如果有测试出现失败,则立即停止测试。

9. -list

-list regexp 只是列出匹配成功的测试函数,并不真正执行。而且不会列出子函数。
在这里插入图片描述

10. -parallel

-parallel n 指定测试的最大并发数。
当测试使用t.Parallel()方法将测试转为并发时,将受到最大并发数的限制,默认情况下,最多有GOMAXPROCS个测试并发,其他的测试只能阻塞等待。

11. -run

-run regexp 的作用是根据正则表达式执行单元测试和示例测试。正则匹配规则与-bench类似。

12. -timeout

-timeout d 默认情况下,测试执行超过10分钟就会因超时而退出。
如果将超时时间设置为1s,那么大于1s的都是因为超时而退出:
在这里插入图片描述

-timeout xs
-timeout xm
-timeout xh

13. -v

默认情况下,测试结果只打印简单的测试结果,-v 参数可以打印详细的日志。

在性能测试下,总是打印日志,因为日志有时会影响性能。

14 -benchmem

默认情况下,性能测试结果只打印运行次数,每个操作耗时。使用-benchmem则可以打印每个操作分配的字节数,每个操作分配的对象数。
在这里插入图片描述


原文地址:https://blog.csdn.net/a18792721831/article/details/140398396

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!