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-encoded. Если тег имени не указан, то autotestName принимает значение имени сценария.
Или привяжите тест императивно: tracera.TestCase(42).
Пропуск
Чтобы пропустить сценарий, верните godog.ErrSkip из step definition. Причину добавьте так — она попадёт в результат как comment:
return fmt.Errorf("needs a seeded account: %w", godog.ErrSkip)
Сценарии также можно исключить через --tags у Godog.
Если шаг pending (ещё не реализован) или undefined (нет step definition), в обычном режиме Godog не считает сценарий Failed — Tracera отправляет весь сценарий как Skipped. Такие шаги не появляются в Шагах, на результате ошибки нет.
Шаги
Шаги Gherkin попадают в секцию Тест результата. Вложенность — через tracera.Step("…", func() { … }). Before/After-хуки сценария попадают в Предусловие / Постусловие; хуки уровня suite в отчёт не попадают.
func addItem() error {
tracera.Step("nested leaf", func() {})
return nil
}
Комментарии, ошибки и вложения
Лимиты и допустимые MIME-типы: Адаптеры автотестов.
Вызывайте tracera.Comment, tracera.Error, tracera.AttachmentFile и tracera.AttachmentBytes — они добавляются к открытому шагу Gherkin или к результату.
Если вы запускаете горутину и вызываете в ней API Tracera (шаги, комментарии, ошибки, вложения), сначала сохраните контекст в тестовой горутине и запустите воркер через 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, если id разный по строкам.
@tracera.id:42
Scenario Outline: Login as <login>
Given the user signs in as "<login>"
Examples:
| login |
| ok |
| sso |