Testify क्या है और इसकी ज़रूरत क्यों है?
Testify, Go भाषा में टेस्टिंग के लिए सबसे लोकप्रिय लाइब्रेरी में से एक है। यह स्टैंडर्ड testing पैकेज की क्षमताओं को बढ़ाता है, डेवलपर्स को साफ, पढ़ने योग्य और मेंटेन करने योग्य टेस्ट लिखने के लिए शक्तिशाली टूल्स प्रदान करता है। Testify कई प्रमुख समस्याओं को हल करता है जिनका सामना Go डेवलपर्स करते हैं:
- Assertions को आसान बनाना:
ifऔरt.Errorfके भारी-भरकम कोड के बजाय, Testifyassert.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 से छोटा नहीं होना चाहिए")
} पुस्तकालय में भी
Swift में PDF जनरेशन: iOS और macOS के लिए दस्तावेज़ बनाना
जावास्क्रिप्ट (Node.js) पर PDF रिपोर्ट जनरेशन: Puppeteer, PDFKit, jsPDF
Rust की WebSocket लाइब्रेरीज़: रियल-टाइम के लिए Tokio-tungstenite और async-tungstenite
C++ में OpenCV से इमेज प्रोसेसिंग: resize और crop करना सीखें
छवियों के साथ कार्य: C++ और OpenCV के साथ resize और crop