gpt4 book ai didi

testing - Golang 测试脚本可以发出警告而不是错误吗?

转载 作者:IT王子 更新时间:2023-10-29 02:13:24 26 4
gpt4 key购买 nike

我有一组测试可能由于外部第 3 方问题而无法通过。我不希望测试在这种情况发生时失败,但希望被告知。

发出 t.Errorf() 不是一个好主意,因为它会停止所有后续测试。是否有某种“警告”我可以触发测试脚本将发布然后继续测试的其余部分?

最佳答案

go 测试工具就像编译器。对于编译器来说,编译或不编译的东西都没有警告。我认为您最接近的是使用 t.Skip .它将停止执行当前测试但不会将其标记为失败。但是,您不会在 go test 的输出中看到任何内容,因此您必须使用 go test -v

这是一个示例包,如果 addExternal 函数失败,则使用 t.Skipf

package app

import "testing"

func add(a, b int) int {
return a + b
}

func addExternal(a, b int) int {
return 4
}

func divide(a, b int) int {
return a / b
}

func TestThing(t *testing.T) {
got := add(1, 2)
want := 3
if got != want {
t.Errorf("add(1, 2) = %d, want %d", got, want)
}
}

func TestExternalThing(t *testing.T) {
got := addExternal(3, 4)
want := 7
if got != want {
t.Skipf("addExternal(3, 4) = %d, want %d", got, want)
}
}

func TestAnotherThing(t *testing.T) {
got := divide(6, 3)
want := 2
if got != want {
t.Errorf("divide(6, 3) = %d, want %d", got, want)
}
}

这是运行它的输出。注意返回状态为0,认为包裹通过

$ go test -v
=== RUN TestThing
--- PASS: TestThing (0.00s)
=== RUN TestExternalThing
--- SKIP: TestExternalThing (0.00s)
app_test.go:29: addExternal(3, 4) = 4, want 7
=== RUN TestAnotherThing
--- PASS: TestAnotherThing (0.00s)
PASS
ok github.com/jcbwlkr/app 0.006s
$ echo $?
0

请注意,如果我将 t.Skipf 更改为 t.Errorft.Fatalf 我会得到此输出

$ go test -v
=== RUN TestThing
--- PASS: TestThing (0.00s)
=== RUN TestExternalThing
--- FAIL: TestExternalThing (0.00s)
app_test.go:29: addExternal(3, 4) = 4, want 7
=== RUN TestAnotherThing
--- PASS: TestAnotherThing (0.00s)
FAIL
exit status 1
FAIL github.com/jcbwlkr/app 0.005s
$ echo $?
1

包中的其他测试仍在运行。如果我正在测试多个包,例如使用 go test -v ./... 我相信它们仍然会运行。

关于testing - Golang 测试脚本可以发出警告而不是错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39357910/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com