Terratest के साथ यूनिट परीक्षण
अवसंरचना कोड के परीक्षण के लिए Go लाइब्रेरी Terratest का उपयोग करके अपने Terraform मॉड्यूल के यूनिट परीक्षण लिखना सीखें।
Terratest के साथ यूनिट परीक्षण, CoddyKit पर DevOps बूटकैंप का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह DevOps बूटकैंप सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। DevOps बूटकैंप पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
कोड के रूप में अपनी अवसंरचना का परीक्षण क्यों करें?
कोड के रूप में अवसंरचना (IaC) आपको अवसंरचना का प्रबंधन सॉफ़्टवेयर की तरह करने देती है। सॉफ़्टवेयर की तरह, IaC कॉन्फ़िगरेशन में भी बग हो सकते हैं!
- विश्वसनीयता: परिनियोजन से पहले त्रुटियों को पकड़ें।
- एकरूपता: सुनिश्चित करें कि संसाधन अपेक्षा के अनुसार उपलब्ध कराए जाएँ।
- विश्वास: मौजूदा अवसंरचना को खराब करने की कम चिंता के साथ बदलाव करें।
मज़बूत और आसानी से बनाए रखने योग्य क्लाउड परिवेश बनाने के लिए अपने Terraform कोड का परीक्षण करना अत्यंत महत्वपूर्ण है।
यूनिट बनाम एकीकरण परीक्षण
कोड के रूप में अवसंरचना का परीक्षण करते समय हम अक्सर दो मुख्य प्रकारों की बात करते हैं:
- यूनिट परीक्षण: ये आपके कोड के छोटे, अलग-थलग हिस्सों, जैसे किसी एक Terraform मॉड्यूल, पर केंद्रित होते हैं। ये सुनिश्चित करते हैं कि अलग-अलग घटक अपने-आप सही ढंग से काम करें।
- एकीकरण परीक्षण: ये जाँचते हैं कि कई घटक या मॉड्यूल एक प्रणाली के रूप में साथ काम करते हैं या नहीं। इनमें अक्सर क्लाउड परिवेश में वास्तविक संसाधनों को परिनियोजित करना शामिल होता है।
इस पाठ में हम आपके Terraform मॉड्यूल के यूनिट परीक्षण पर ध्यान देंगे।
Terratest का परिचय
Terratest HashiCorp (Terraform के निर्माताओं) द्वारा विकसित Go लाइब्रेरी है, जिसे विशेष रूप से अवसंरचना कोड के परीक्षण के लिए बनाया गया है।
- यह आपको अपने Terraform, Packer, Kubernetes और अन्य कोड के रूप में अवसंरचना के लिए स्वचालित परीक्षण लिखने में सहायता करती है।
- Terratest आपके क्लाउड प्रदाता पर वास्तविक अवसंरचना परिनियोजित कर सकता है, उसके विरुद्ध अभिकथन चला सकता है और फिर उसे साफ़ कर सकता है।
- यह यूनिट और एकीकरण, दोनों प्रकार के परीक्षणों के लिए शक्तिशाली है।
टेराटेस्ट की पूर्वापेक्षाएँ
टेराटेस्ट शुरू करने के लिए आपको कुछ चीज़ों की आवश्यकता होगी:
- Go: टेराटेस्ट एक Go लाइब्रेरी है, इसलिए आपके सिस्टम पर Go इंस्टॉल होना चाहिए (संस्करण 1.13 या उसके बाद का संस्करण अनुशंसित है)।
- Terraform CLI: Terraform का कमांड-लाइन इंटरफ़ेस इंस्टॉल और आसानी से उपलब्ध होना चाहिए।
- क्लाउड प्रदाता की साख: यदि आप वास्तविक संसाधन परिनियोजित कर रहे हैं (यहाँ तक कि ऐसे इकाई परीक्षणों के लिए भी जो क्लाउड API से संपर्क करते हैं), तो आपको प्रमाणित क्लाउड प्रदाता पहुँच की आवश्यकता होगी (जैसे, AWS CLI का कॉन्फ़िगर किया हुआ होना)।
आपको Go प्रोग्रामिंग की मूल अवधारणाओं से परिचित होना भी आवश्यक है।
Go परीक्षण फ़ाइल की संरचना
टेराटेस्ट परीक्षण Go में लिखे जाते हैं और Go के मानक परीक्षण नियमों का पालन करते हैं:
- परीक्षण फ़ाइलों का अंत
_test.goसे होता है (जैसे,main_test.go)। - परीक्षण फ़ंक्शन
Testसे शुरू होते हैं (जैसे,TestMyModule(t *testing.T))। - इनमें Go का अंतर्निर्मित
testingपैकेज उपयोग किया जाता है।
ये फ़ाइलें आम तौर पर आपके Terraform मॉड्यूल के साथ रखी जाती हैं या एक समर्पित test निर्देशिका में होती हैं।
`terraform.Options` की व्याख्या
टेराटेस्ट Terraform परीक्षण का मुख्य भाग terraform.Options संरचना है। यह ऑब्जेक्ट टेराटेस्ट को बताता है कि Terraform को कैसे चलाना है।
मुख्य फ़ील्ड में शामिल हैं:
TerraformDir: आपके Terraform मॉड्यूल का पथ।Vars: आपके Terraform मॉड्यूल के लिए इनपुट चर।EnvVars: Terraform प्रक्रिया के लिए सेट किए जाने वाले पर्यावरण चर।BackendConfig: आपके Terraform बैकएंड का कॉन्फ़िगरेशन।
यह परीक्षण के भीतर Terraform कमांड चलाने की आपकी रूपरेखा है।
मूल परीक्षण कार्यप्रवाह
Terraform के लिए एक सामान्य टेराटेस्ट इकाई परीक्षण में ये चरण होते हैं:
- विकल्प परिभाषित करें: अपने मॉड्यूल की ओर संकेत करने वाली और चर सेट करने वाली
terraform.Optionsसंरचना बनाएँ। - परिनियोजित करें: अपने कॉन्फ़िगरेशन को प्रारंभ करने और लागू करने के लिए
terraform.InitAndApply(t, options)का उपयोग करें। - Destroy को स्थगित करें: परीक्षण चलने के बाद सफ़ाई सुनिश्चित करने के लिए तुरंत
defer terraform.Destroy(t, options)जोड़ें। - पुष्टि करें: संसाधन के गुणों या आउटपुट की जाँच करने के लिए Go के
testify/assertया टेराटेस्ट केterraform.Outputका उपयोग करें।
इससे एक स्वच्छ और पृथक परीक्षण वातावरण सुनिश्चित होता है।
`terraform.Options` कोड करना
यहाँ terraform.Options सेट करने का तरीका दिखाने वाला एक सरल Go प्रोग्राम है। यह टेराटेस्ट के साथ किसी भी सहभागिता का बुनियादी चरण है।
package main
import (
"fmt"
"path/filepath"
"github.com/gruntwork-io/terratest/modules/terraform"
)
func main() {
// Define the path to your Terraform configuration directory.
// In a real test, this would point to your module under test.
terraformConfigDir := filepath.Join(".", "my-example-module")
// Create a terraform.Options object.
// This struct holds all the configuration for running Terraform via Terratest.
options := &terraform.Options{
TerraformDir: terraformConfigDir,
// You would add input variables here, e.g.:
// Vars: map[string]interface{}{"instance_type": "t2.micro"},
// And environment variables, e.g.:
// EnvVars: map[string]string{"AWS_REGION": "us-east-1"},
}
fmt.Println("--- Terratest Options Configuration Demo ---")
fmt.Printf("Configured Terraform Directory: %s\n", options.TerraformDir)
fmt.Println("This shows how to initialize Terratest options.")
fmt.Println("Actual Terratest unit tests are run using 'go test' command.")
}आउटपुट की पुष्टि करना
अपने Terraform कॉन्फ़िगरेशन को लागू करने के बाद, आप उसके आउटपुट की पुष्टि करना चाहेंगे। टेराटेस्ट इन मानों को आसानी से प्राप्त करने के लिए फ़ंक्शन उपलब्ध कराता है।
terraform.Output(t, options, "output_name"): एकल स्ट्रिंग आउटपुट प्राप्त करता है।terraform.OutputMap(t, options, "output_name"): मैप आउटपुट प्राप्त करता है।terraform.OutputList(t, options, "output_name"): सूची आउटपुट प्राप्त करता है।
इसके बाद आप यह जाँचने के लिए Go के परीक्षण अभिकथनों (जैसे, github.com/stretchr/testify/assert से) का उपयोग करते हैं कि आउटपुट आपकी अपेक्षाओं से मेल खाते हैं या नहीं।
अपनी समझ जाँचें
टेराटेस्ट वास्तविक क्लाउड संसाधनों के साथ संपर्क करके आपके Terraform कोड का परीक्षण करने में सहायता करता है। निम्नलिखित में से कौन-सा टेराटेस्ट इकाई परीक्षण कार्यप्रवाह का सामान्य चरण नहीं है?
पुनरावलोकन और अगले चरण
आपने टेराटेस्ट के साथ Terraform की इकाई जाँच की मूल बातें सीख ली हैं!
- टेराटेस्ट IaC की जाँच के लिए एक Go लाइब्रेरी है।
- यह आपको वास्तविक क्लाउड अवसंरचना परिनियोजित करने, उसकी पुष्टि करने और उसे साफ़ करने की सुविधा देता है।
- मुख्य घटकों में
_test.goफ़ाइलें,func TestXxx(t *testing.T)औरterraform.Optionsसंरचना शामिल हैं। - कार्यप्रवाह में विकल्पों को परिभाषित करना, Terraform लागू करना, अभिकथन करना और
deferके साथ सफ़ाई सुनिश्चित करना शामिल है।
अब अधिक जटिल अभिकथन लिखना और स्वचालित परीक्षण के लिए टेराटेस्ट को अपनी CI/CD पाइपलाइनों में एकीकृत करना सीखें।
एआई शिक्षक के साथ DevOps बूटकैंप सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 142
- पाठ
- 568
अक्सर पूछे जाने वाले प्रश्न
क्या “Terratest के साथ यूनिट परीक्षण” पाठ निःशुल्क है?
हाँ — DevOps बूटकैंप अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “Terratest के साथ यूनिट परीक्षण” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। DevOps बूटकैंप पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“Terratest के साथ यूनिट परीक्षण” में मैं क्या सीखूँगा?
अवसंरचना कोड के परीक्षण के लिए Go लाइब्रेरी Terratest का उपयोग करके अपने Terraform मॉड्यूल के यूनिट परीक्षण लिखना सीखें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ DevOps बूटकैंप का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या DevOps बूटकैंप शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर DevOps बूटकैंप शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।
“Terratest के साथ यूनिट परीक्षण” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस DevOps बूटकैंप पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर DevOps बूटकैंप पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- Terraform `validate` और `fmt`
- Terratest के साथ यूनिट परीक्षण
- क्लाउड संसाधनों का एकीकरण परीक्षण
- कोड के रूप में नीति और अनुपालन जाँच