我有这个Benchmark功能:
BenchmarkMyTest(b *testing.B) {
}
我想只运行此函数而不运行所有其他测试,但该命令对我来说从未起作用。
go test -bench='BenchmarkMyTest'
or
go test -run='BenchmarkMyTest'
在Go中运行单个基准测试功能的正确方法是什么? 它说要使用正则表达式,但我找不到任何文档。
谢谢,
答案 0 :(得分:2)
Command Go: Description of testing flags:
描述-bench regexp
Run benchmarks matching the regular expression.
By default, no benchmarks run. To run all benchmarks,
use '-bench .' or '-bench=.'.
-run regexp
Run only those tests and examples matching the regular
expression.
所以语法是你必须用空格或等号(没有撇号)分隔它,你指定的是一个正则表达式:
go test -bench BenchmarkMyTest
go test -run TestMyTest
或者:
go test -bench=BenchmarkMyTest
go test -run=TestMyTest
正好指定1个功能
由于指定的表达式是正则表达式,因此它还将匹配其名称包含指定名称的函数(例如,名称以此开头的另一个函数,例如"BenchmarkMyTestB"
)。如果您只想匹配"BenchmarkMyTest"
,请附加正则表达式字边界'\b'
:
go test -bench BenchmarkMyTest\b
go test -run TestMyTest\b
请注意,仅将其附加到结尾就足够了,就像函数名称不是以"Benchmark"
开头一样,它不被视为基准函数,同样如果它不以{开头} {1}},它不被视为测试功能(并且无论如何都不会被接收)。
答案 1 :(得分:0)
我发现这些答案不完整,所以这里有更多的主题......
以下命令运行所有以 # FinTransDetail class
def __str__(self):
return self.fd_no.fh_code
开头的基准测试(BenchmarkMyTest1、BenchmarkMyTest2 等...)并跳过所有带有 BenchmarkMyTest
的测试
您还可以使用 -run=^$ .
指定测试持续时间,或者您可以使用 -benchtime 5s
强制 b.ReportAllocs()
以获得如下值:
-benchmem
最后的命令是:
BenchmarkLogsWithBytesBufferPool-48 46416456 26.91 ns/op 0 B/op 0 allocs/op