Ginkgo
go get github.com/tracera-dev/tracera-go/ginkgo
需要 Go ≥ 1.25 和 Ginkgo v2(见 自动化测试适配器)。ginkgo 在 pkg.go.dev 上的页面。
环境变量与运行模式:自动化测试适配器。
在 suite 文件中调用一次 Register():
import tracera_ginkgo "github.com/tracera-dev/tracera-go/ginkgo"
var _ = tracera_ginkgo.Register()
绑定 testCaseId 与 autotestName
推荐使用 Ginkgo Label — 即使测试体提前跳过也会绑定:
It("checks out", Label("tracera.id:42"), func() {
// …
})
It("checks out", Label("tracera.id:42", "tracera.name:e2e/checkout"), func() {
// …
})
也可以用 tracera.TestCase(42) / tracera.TestCase(42, "e2e/checkout") 以命令式方式绑定。
Skip
使用 Ginkgo 自带的 skip(Skip("…"))。Skip 原因会作为 comment 添加到结果。
步骤
使用 tracera.Step("…", func() { … })。BeforeEach / AfterEach 中的步骤进入结果的 准备 / 清理;用例体内的步骤进入 测试。套件级钩子(BeforeSuite / AfterSuite)不会上报。
BeforeEach(func() {
tracera.Step("open shop", func() {})
})
It("pays", Label("tracera.id:10"), func() {
tracera.Step("add item", func() {
tracera.Step("nested leaf", func() {})
})
})
注释、错误与附件
限制与允许的 MIME 类型:自动化测试适配器。
调用 tracera.Comment、tracera.Error、tracera.AttachmentFile 和 tracera.AttachmentBytes,内容会添加到当前打开的步骤或结果。
若在新的 goroutine 中调用 Tracera API(步骤、注释、错误、附件),先在测试 goroutine 中保存上下文,再用 tracera.RunWithContext 运行工作代码 — 否则这些调用不会写入报告:
ctx := tracera.GetContext()
go tracera.RunWithContext(ctx, func() {
tracera.Step("worker", func() { /* ... */ })
})
并行套件(ginkgo -p、--procs=N)共享同一 test run,无需额外配置。
参数化测试
使用 Ginkgo 的 DescribeTable / Entry。在 Label(表或条目)上写固定的 tracera.id:。若未指定名称,则 autotestName 取 Ginkgo 测试名称 — 请为每个 Entry 设置不同的标题(例如下方的 "one item" / "two items")。也可以把名称传给 tracera.TestCase:
DescribeTable("checkout", Label("tracera.id:101"),
func(qty int) { /* ... */ },
Entry("one item", 1),
Entry("two items", 2),
)