Godog
go get github.com/tracera-dev/tracera-go/godog
يتطلب Go ≥ 1.25 وGodog ≥ 0.16 (انظر محوّلات الاختبار الآلي). godog على pkg.go.dev.
متغيرات البيئة ووضع التشغيل: محوّلات الاختبار الآلي.
فعّل المجموعة ومُهيّئ السيناريوهات حتى تذهب خطافات After القياسية إلى التنظيف (ينفّذ Godog خطافات After بترتيب تسجيلها):
import (
"github.com/cucumber/godog"
tracera_godog "github.com/tracera-dev/tracera-go/godog"
)
suite := godog.TestSuite{
TestSuiteInitializer: tracera_godog.RegisterSuite,
ScenarioInitializer: tracera_godog.Initialize(func(sc *godog.ScenarioContext) {
sc.Before(setup)
sc.After(teardown)
// step definitions …
}),
}
ربط testCaseId وautotestName
فضّل الوسوم على Scenario:
@tracera.id:42
Scenario: Checkout
Given the cart is open
الوسم الاختياري @tracera.name: يُرمَّز بـ URL. إذا لم يُحدَّد وسم الاسم، فإن autotestName يأخذ قيمة اسم السيناريو.
أو اربط أمريًا عبر tracera.TestCase(42).
Skip
لتخطّي السيناريو، أعد godog.ErrSkip من تعريف الخطوة. لإضافة السبب كـ comment للنتيجة، لُفّه هكذا:
return fmt.Errorf("needs a seeded account: %w", godog.ErrSkip)
يمكنك أيضًا استبعاد السيناريوهات عبر --tags في Godog.
إذا كانت الخطوة pending (غير منفَّذة بعد) أو undefined (لا يوجد step definition مطابق)، فإن Godog في الوضع الافتراضي لا يفشل السيناريو — وتبلّغ Tracera السيناريو كاملاً كـ Skipped. لا تظهر تلك الخطوات تحت الخطوات، ولا يوجد خطأ على النتيجة.
الخطوات
تذهب خطوات Gherkin إلى الاختبار في النتيجة. للتداخل استخدم tracera.Step("…", func() { … }). خطافات Before/After للسيناريو تذهب إلى الإعداد / التنظيف؛ وخطافات مستوى المجموعة لا تُبلَّغ.
func addItem() error {
tracera.Step("nested leaf", func() {})
return nil
}
التعليقات والأخطاء والمرفقات
الحدود وأنواع MIME المسموحة: محوّلات الاختبار الآلي.
استدعِ tracera.Comment وtracera.Error وtracera.AttachmentFile وtracera.AttachmentBytes — تُضاف إلى خطوة Gherkin المفتوحة أو إلى النتيجة.
إذا شغّلت goroutine واستدعيت فيها واجهات Tracera (الخطوات والتعليقات والأخطاء والمرفقات)، احفظ السياق أولًا على goroutine الاختبار ثم شغّل العامل بـ tracera.RunWithContext — وإلا لن تُدرَج هذه الاستدعاءات في التقرير:
ctx := tracera.GetContext()
go tracera.RunWithContext(ctx, func() {
tracera.Step("worker", func() { /* ... */ })
})
توازي السيناريوهات (godog.Options.Concurrency > 1) لا يحتاج إعداد Tracera إضافيًا.
الاختبارات ذات المعاملات
كل صف في Examples يحصل على اسم السيناريو بعد أن يملأ Godog عناصر <…>. ضع @tracera.id: ثابتًا على الـ Outline أو الـ Scenario، أو استدعِ tracera.TestCase عندما يختلف المعرّف لكل مثال.
@tracera.id:42
Scenario Outline: Login as <login>
Given the user signs in as "<login>"
Examples:
| login |
| ok |
| sso |