क्या कोई भी टेस्ट केस लिखते समय पायथन setUp
और tearDown
विधियों के उपयोग की व्याख्या कर सकता है setUp
, टेस्ट पद्धति को कॉल करने से तुरंत पहले tearDown
बुलाया जाता है और इसे कॉल किए जाने के तुरंत बाद कहा जाता है?
जवाबों:
सामान्य तौर पर आप सभी पूर्वापेक्षाओं को सेटअप में जोड़ते हैं और सभी क्लीन-अप चरणों को आंसू बहाते हैं।
आप यहां उदाहरणों के साथ अधिक पढ़ सकते हैं ।
जब एक सेटअप () विधि परिभाषित की जाती है, तो परीक्षण धावक प्रत्येक परीक्षण से पहले उस पद्धति को चलाएगा। इसी तरह, अगर एक आंसू () पद्धति को परिभाषित किया जाता है, तो परीक्षण धावक प्रत्येक परीक्षण के बाद उस विधि को लागू करेगा।
उदाहरण के लिए, आपके पास एक ऐसा परीक्षण है जिसके लिए वस्तुओं की मौजूदगी या निश्चित अवस्था की आवश्यकता होती है - इसलिए आप इन कार्यों को सेटअप में डालते हैं (ऑब्जेक्ट इंस्टेंस बना रहे हैं, db को इनिशियलाइज़ कर रहे हैं, नियम तैयार कर रहे हैं)।
जैसा कि आप जानते हैं कि प्रत्येक परीक्षण उस स्थान पर रुकना चाहिए जहां इसे शुरू किया गया था - इसका मतलब है कि हमें प्रारंभिक अवस्था में ऐप स्टेट को पुनर्स्थापित करना होगा - जैसे कि नज़दीकी फाइलें, कनेक्शन, नए बनाए गए आइटमों को निकालना, कॉलबैक कॉलबैक और इतने पर - ये सब कदम आँसू में शामिल किया जाना है।
तो विचार यह है कि परीक्षण में केवल ऐसी क्रियाएं शामिल होनी चाहिए जो परिणाम प्राप्त करने के लिए परीक्षण ऑब्जेक्ट पर की जाए, जबकि सेटअप और टियरडाउन आपके परीक्षण कोड को साफ और लचीला छोड़ने में आपकी सहायता करने के तरीके हैं।
आप परीक्षणों के एक समूह के लिए एक सेटअप और टियरडाउन बना सकते हैं और उन्हें मूल श्रेणी में परिभाषित कर सकते हैं - इसलिए आपके लिए इस तरह के परीक्षणों का समर्थन करना और सामान्य तैयारी और क्लीन अप को अपडेट करना आसान होगा।
यदि आप एक आसान उदाहरण की तलाश में हैं तो कृपया उदाहरण के साथ निम्नलिखित लिंक का उपयोग करें
आप परीक्षण सूट में सभी परीक्षणों के लिए कोड कॉमन टू फैक्टर आउट का उपयोग कर सकते हैं।
यदि आपके परीक्षणों में बहुत बार दोहराया गया कोड है, तो आप इस कोड को सेटअप / टियरडाउन में ले जाकर उन्हें छोटा बना सकते हैं।
आप परीक्षण डेटा बनाने के लिए इसका उपयोग कर सकते हैं (उदाहरण के लिए नकली / नकली सेट करना), या नकली के साथ कार्यों को रोकना।
यदि आप एकीकरण परीक्षण कर रहे हैं, तो आप सेटअप में पर्यावरण पूर्व स्थितियों की जांच कर सकते हैं, और यदि कुछ ठीक से सेट नहीं किया गया है तो परीक्षण को छोड़ दें।
उदाहरण के लिए:
class TurretTest(unittest.TestCase):
def setUp(self):
self.turret_factory = TurretFactory()
self.turret = self.turret_factory.CreateTurret()
def test_turret_is_on_by_default(self):
self.assertEquals(True, self.turret.is_on())
def test_turret_turns_can_be_turned_off(self):
self.turret.turn_off()
self.assertEquals(False, self.turret.is_on())
मान लीजिए आपके पास 10 परीक्षणों वाला एक सूट है। परीक्षणों में से 8 समान सेटअप / फाड़ कोड साझा करते हैं। अन्य 2 नहीं।
सेटअप और टियरडाउन आपको उन 8 परीक्षणों को रिफैक्ट करने का एक अच्छा तरीका देता है। अब आप अन्य 2 परीक्षणों के साथ क्या करते हैं? आप उन्हें दूसरे टेस्टकेस / सुइट में ले जाएंगे। इसलिए सेटअप और टियरडाउन का उपयोग करके मामलों / सूटों में परीक्षणों को तोड़ने का एक प्राकृतिक तरीका देने में मदद करता है