Testify Go टेस्टिंग: पूरी गाइड उदाहरणों के साथ

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Testify क्या है और इसकी ज़रूरत क्यों है?

Testify, Go भाषा में टेस्टिंग के लिए सबसे लोकप्रिय लाइब्रेरी में से एक है। यह स्टैंडर्ड testing पैकेज की क्षमताओं को बढ़ाता है, डेवलपर्स को साफ, पढ़ने योग्य और मेंटेन करने योग्य टेस्ट लिखने के लिए शक्तिशाली टूल्स प्रदान करता है। Testify कई प्रमुख समस्याओं को हल करता है जिनका सामना Go डेवलपर्स करते हैं:

  • Assertions को आसान बनाना: if और t.Errorf के भारी-भरकम कोड के बजाय, Testify assert.Equal जैसे संक्षिप्त तरीके प्रदान करता है।
  • एरर मैसेज की स्पष्टता: टेस्ट फेल होने पर, Testify विस्तृत संदेश दिखाता है जिसमें अपेक्षित और वास्तविक मान साफ़ तौर पर बताए जाते हैं।
  • Mocks बनाना: बिल्ट-इन mock सपोर्ट आपको बाहरी डिपेंडेंसी (डेटाबेस, HTTP क्लाइंट, फ़ाइल सिस्टम) से टेस्ट किए जा रहे कोड को आसानी से अलग करने में मदद करता है।
  • टेस्ट ग्रुपिंग (Suite): टेस्ट को सामान्य सेटअप/टियरडाउन (Setup/Teardown) के साथ लॉजिकल ग्रुप्स में जोड़ने की सुविधा देता है।

Testify छोटी उपयोगिताओं से लेकर बड़े माइक्रोसर्विस आर्किटेक्चर तक, किसी भी आकार के प्रोजेक्ट के लिए एकदम सही है। यह Go समुदाय में टेस्टिंग का डी-फैक्टो स्टैंडर्ड है।

इंस्टॉलेशन

Testify को एक सामान्य Go डिपेंडेंसी की तरह इंस्टॉल किया जाता है। सुनिश्चित करें कि आपके पास Go (वर्शन 1.16 या उससे ऊपर) इंस्टॉल है और एक मॉड्यूल इनिशियलाइज़ (go mod init) किया गया है।

go get github.com/stretchr/testify

कमांड चलाने के बाद, Testify आपकी go.mod फ़ाइल में जुड़ जाएगा। अब आप इसे अपने टेस्ट फ़ाइलों में इम्पोर्ट कर सकते हैं।

त्वरित शुरुआत

चलिए एक सरल फंक्शन के लिए टेस्ट लिखते हैं जो दो संख्याओं को जोड़ता है। पहले math.go फ़ाइल बनाएं:

package main

func Add(a, b int) int {
    return a + b
}

अब टेस्ट फ़ाइल math_test.go बनाएं:

package main

import (
    "testing"
    "github.com/stretchr/testify/assert"
)

func TestAdd(t *testing.T) {
    result := Add(2, 3)
    expected := 5
    assert.Equal(t, expected, result, "2 + 3 का मान 5 होना चाहिए")
}

टेस्ट चलाएं:

go test -v

आपको हरा (पास) रिज़ल्ट दिखेगा। अगर अपेक्षित मान को 6 में बदल दें, तो टेस्ट विस्तृत एरर मैसेज के साथ फेल हो जाएगा।

मुख्य मेथड्स और फंक्शन्स

1. assert.Equal

विवरण: जाँचता है कि दो मान बराबर हैं। जटिल टाइप्स (स्लाइस, स्ट्रक्चर, मैप) की तुलना के लिए reflect.DeepEqual का उपयोग करता है।

पैरामीटर:

  • t — *testing.T ऑब्जेक्ट
  • expected — अपेक्षित मान
  • actual — वास्तविक मान
  • msg (वैकल्पिक) — एरर मैसेज

उदाहरण:

func TestEqual(t *testing.T) {
    assert.Equal(t, 10, 5+5, "5+5 का मान 10 होना चाहिए")
    assert.Equal(t, []int{1, 2, 3}, []int{1, 2, 3})
}

2. assert.NotEqual

विवरण: Equal का विपरीत। जाँचता है कि दो मान बराबर नहीं हैं।

पैरामीटर: Equal के समान।

उदाहरण:

func TestNotEqual(t *testing.T) {
    assert.NotEqual(t, 10, 5+4, "5+4 का मान 10 नहीं होना चाहिए")
}

3. assert.True / assert.False

विवरण: जाँचता है कि एक्सप्रेशन सही (True) है या गलत (False)।

पैरामीटर:

  • t — *testing.T ऑब्जेक्ट
  • condition — बूलियन एक्सप्रेशन
  • msg (वैकल्पिक) — एरर मैसेज

उदाहरण:

func TestTrueFalse(t *testing.T) {
    assert.True(t, 5 > 3, "5 का मान 3 से बड़ा होना चाहिए")
    assert.False(t, 5 < 3, "5 का मान 3 से छोटा नहीं होना चाहिए")
}                    

अनुशंसाएँ