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) से imperative रूप से बाइंड करें।
Skip
Scenario skip करने के लिए step definition से godog.ErrSkip लौटाएँ। कारण को परिणाम के comment में जोड़ने के लिए ऐसे रैप करें:
return fmt.Errorf("needs a seeded account: %w", godog.ErrSkip)
Godog के --tags से भी Scenario हटा सकते हैं।
यदि स्टेप pending (अभी लागू नहीं) या undefined (कोई step definition नहीं) हो, तो डिफ़ॉल्ट मोड में Godog Scenario को Failed नहीं मानता — Tracera पूरे Scenario को Skipped रिपोर्ट करता है। वे स्टेप स्टेप्स में नहीं दिखते, और परिणाम पर कोई error नहीं होता।
स्टेप्स
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 स्टेप या परिणाम में जुड़ते हैं।
अगर आप नई गोरुटीन में Tracera API कॉल करते हैं (स्टेप्स, कमेंट, एरर, अटैचमेंट), तो पहले टेस्ट गोरुटीन पर कॉन्टेक्स्ट सेव करें और वर्कर को tracera.RunWithContext से चलाएँ — नहीं तो ये कॉल रिपोर्ट में नहीं जाएँगे:
ctx := tracera.GetContext()
go tracera.RunWithContext(ctx, func() {
tracera.Step("worker", func() { /* ... */ })
})
Scenario concurrency (godog.Options.Concurrency > 1) के लिए कोई अतिरिक्त Tracera सेटअप नहीं चाहिए।
पैरामीटराइज़्ड टेस्ट
हर Examples पंक्ति को Godog द्वारा <…> भरने के बाद बना Scenario नाम मिलता है। Outline या Scenario पर स्थिर @tracera.id: लगाएँ, या प्रति पंक्ति अलग id हो तो tracera.TestCase कॉल करें।
@tracera.id:42
Scenario Outline: Login as <login>
Given the user signs in as "<login>"
Examples:
| login |
| ok |
| sso |