让我们考虑这个简单的测试代码。
(注意:assertSomething这里非常简单,但通常我会为手头的任务编写一个更专业的帮助程序,它会查看多种情况并报告不止一种类型的错误。)
package hello
import "testing"
func TestFoo(t *testing.T) {
assertSomething(t, 2+2 == 4) // line 6
assertSomething(t, 2+3 == 6) // line 7
}
func assertSomething(t *testing.T, expected bool) {
if !expected {
t.Error("Something's not right") // line 12
}
}
当我运行时go test,我得到以下信息:
--- FAIL: TestFoo (0.00s)
hello.go:12: Something's not right
FAIL
exit status 1
FAIL kos/hello 0.008s
我有两个问题:
1) 错误指向第 12 行 - 为什么?如何t.Error找出它是从哪一行调用的?
2)在帮助器中,我想指定t.Error应该看起来更高的堆栈级别以确定要打印的行号,以便我会收到如下消息:
--- FAIL: TestFoo (0.00s)
hello.go:7: Something's not right
Python 允许我这样做,例如,在warnings.warn("message", stacklevel=2)- 我将如何在这里实现等价物?
蝴蝶刀刀
相关分类