gotest

go get github.com/tracera-dev/tracera-go/gotest

Go ≥ 1.25 आवश्यक (ऑटोटेस्ट एडेप्टर देखें)। gotest pkg.go.dev पर।

एनवायरनमेंट वेरिएबल और रन मोड: ऑटोटेस्ट एडेप्टर।

रिपोर्टिंग को TestMain में एक बार जोड़ें:

package checkout_test

import (
    "os"
    "testing"

    "github.com/tracera-dev/tracera-go/gotest"
)

func TestMain(m *testing.M) {
    os.Exit(gotest.Run(m))
}

testCaseId और autotestName बाँधना

मानक testing और imperative बाइंड उपयोग करें:

func TestCheckout(t *testing.T) {
    gotest.TestCase(t, 42)
    // gotest.TestCase(t, 42, "e2e/checkout")
}

पैरेलल टेस्ट में gotest.TestCase से पहले t.Parallel() कॉल करें।

Skip

gotest.Skip / gotest.Skipf उपयोग करें — कारण परिणाम में comment के रूप में जुड़ता है (अकेला t.Skip ऐसा नहीं करता):

func TestCheckout(t *testing.T) {
    gotest.TestCase(t, 42)
    gotest.Skip(t, "needs a seeded account")
}

स्टेप्स

tracera.Step("…", func() { … }) उपयोग करें। Go में मेथड स्टेप डेकोरेटर नहीं है। tracera.Setup / tracera.Teardown के अंदर के स्टेप परिणाम के सेटअप / टीयरडाउन में जाते हैं; बाकी स्टेप टेस्ट में।

tracera.Step के अंदर panic परिणाम कार्ड पर एरर संदेश जोड़ता है। यदि टेस्ट t.Fatal / t.Error से फेल हो, तो परिणाम फिर भी Failed होता है, पर फेल टेक्स्ट केवल go test आउटपुट में रहता है।

import "github.com/tracera-dev/tracera-go"

func TestCheckout(t *testing.T) {
    gotest.TestCase(t, 10)

    tracera.Setup("open shop", func() {})
    tracera.Step("add item", func() {
        tracera.Step("nested leaf", func() {})
    })
    tracera.Teardown("close shop", func() {})
}

कमेंट, एरर और अटैचमेंट

सीमाएँ और अनुमत MIME प्रकार: ऑटोटेस्ट एडेप्टर।

tracera.Comment, tracera.Error और अटैचमेंट खुले स्टेप में जुड़ते हैं, और कोई स्टेप खुला न हो तो परिणाम में। tracera.AttachmentFile फ़ाइल पथ लेता है; tracera.AttachmentBytes नाम, बाइट्स और MIME प्रकार लेता है। अटैचमेंट परिणाम रिपोर्ट होने पर अपलोड होते हैं।

import tracera "github.com/tracera-dev/tracera-go"

tracera.Comment("result-level note")
tracera.Error("result-level error")
tracera.AttachmentFile("testdata/screenshot.png")
tracera.Step("open login", func() {
    tracera.Comment("step note")
    tracera.AttachmentBytes("body.json", []byte(`{"ok":true}`), "application/json")
})

अगर आप नई गोरुटीन में Tracera API कॉल करते हैं (स्टेप्स, कमेंट, एरर, अटैचमेंट), तो पहले टेस्ट गोरुटीन पर कॉन्टेक्स्ट सेव करें और वर्कर को tracera.RunWithContext से चलाएँ — नहीं तो ये कॉल रिपोर्ट में नहीं जाएँगे:

ctx := tracera.GetContext()
go tracera.RunWithContext(ctx, func() {
    tracera.Step("worker", func() { /* ... */ })
})

पैरामीटराइज़्ड टेस्ट

t.Run की पंक्तियाँ उपयोग करें। हर पंक्ति के लिए स्थिर नाम चाहिए तो TestCase में नाम दें:

func TestMatrix(t *testing.T) {
    for _, row := range []struct{ login string }{{"alice"}, {"bob"}} {
        t.Run(row.login, func(t *testing.T) {
            gotest.TestCase(t, 7, "login as "+row.login)
        })
    }
}