पायथन परीक्षण में, हम क्यों लिखना चाहिए:इन दिनों परीक्षणों में पाइथन के जोरदार कथन का उपयोग क्यों नहीं करते?
self.assertEqual(response.status_code, 200)
self.assertIn('key', my_dict)
self.assertIsNotNone(thing)
के रूप में प्राकृतिक करने का विरोध किया:
assert response.status_code == 200
assert 'key' in my_dict
assert thing is not None
कई मामलों के लिए, विफलता अभिकथन सहायक विधियों से उत्पन्न संदेशों किसी भी अधिक पढ़ने योग्य नहीं हैं (तर्कसंगत रूप से ऊंट की ऊंट की शैली कम पठनीय है)। अपने प्रोजेक्ट के
पृष्ठभूमि:
- हम हमेशा इस तरह के नाक या py.test के रूप में आधुनिक परीक्षण धावक का उपयोग कर रहे हैं, और हम वास्तव में नहीं है unittest धावक के बारे में परवाह। टेस्ट डिस्कवरी इस बात पर भी ध्यान नहीं देती है कि वर्ग को अंततः
unittest.TestCase
प्राप्त होता है, या आप उस मामले के लिए कक्षा में काम करते हैं या नहीं। - हम ओआर स्विच के साथ स्वचालित परीक्षण कभी भी निष्पादित नहीं करेंगे।
- जब हम एक और अधिक पठनीय संदेश चाहते हैं, तो एकजुट से डिफ़ॉल्ट एक आम तौर पर पर्याप्त नहीं है - उदा। वहां एक मूल्य भिन्न है, जो कहीं भी जेसन डेटा में घिरा हुआ है, और हम एक प्रासंगिक diff देखना चाहते हैं।
कोर लाइब्रेरी और सीपीथन परीक्षण आम तौर पर एकजुट शैली में लिखे जाते हैं, और वे आम तौर पर एक अच्छे कारण के लिए सबकुछ करते हैं। तो मेरा सवाल यह है कि, क्या यह अनजान की शैली के बाहर काम करना ठीक है, या क्या कुछ नुकसान हैं जो मुझे याद आ रही है - क्यों न केवल अपने परीक्षणों में ज़ोर देना? कोर देव अभी तक एकदम से दूर क्यों नहीं गए हैं?
परिशिष्ट:
इन विधियों ज़ोर बयान के स्थान पर प्रयोग किया जाता है ताकि परीक्षण धावक सभी परीक्षण के परिणाम जमा होते हैं और एक रिपोर्ट
उत्पादन कर सकते हैं: docs एक कारण का उल्लेख करना हालांकि यह औचित्य फर्जी प्रतीत होता है, परीक्षण धावक सामान्य रूप से परिणामों और रिपोर्ट जमा कर सकता है भले ही आप जोरदार बयानों का उपयोग करते हों। related post में unutbu ने दिखाया है कि unittest AssertionError
को जोरदार कथन के समान ही बढ़ाएगा, और यह 7 साल पहले था, इसलिए यह एक चमकदार नई सुविधा नहीं है।
मैं अब तक 'unittest' से बाहर काम करता हूं कि मैं 'assert' के बजाय' प्रिंट()' का उपयोग करता हूं। मुझे लगता है कि यह सब आपकी परियोजना की जटिलता और पैमाने पर निर्भर करता है। – TigerhawkT3
यह ज्यादातर राय का विषय लगता है। यदि आपको लगता है कि 'जोर' बेहतर है तो ऐसा कुछ भी नहीं है जो आपके द्वारा उपयोग किए जाने से रोकता है (इसके अलावा आपके सहयोगी असहमत हो)। हालांकि यह ज्ञात होना चाहिए कि आप 'टेस्टकेस' कक्षा में विधियों को ओवरराइड कर सकते हैं और व्यवहार को कस्टमाइज़ कर सकते हैं - 'assert' कथन में यह लचीलापन नहीं है। इसके अलावा 'TestCase.failureException' को बदला जा सकता है जो आपके बिंदु को अमान्य अपवाद के रूप में फेंक दिया गया है) (यदि आप विफलता के बजाय' त्रुटि 'पर विचार करना चाहते हैं तो इसका उपयोग किया जा सकता है)। – skyking
बस सादा 'जोर' बहुत अधिक पठनीय है। तो यदि आपके परीक्षण विफल हो जाते हैं तो हमेशा 'pytest' का उपयोग करें। – o11c