हमारी विकास टीम PEP8 लिंटर का उपयोग करती है जिसके लिए अधिकतम 80 वर्णों की लाइन की आवश्यकता होती है ।
जब मैं अजगर में यूनिट परीक्षण लिख रहा हूं, तो मुझे यह बताने के लिए वर्णनात्मक विधि के नाम पसंद हैं कि प्रत्येक परीक्षण क्या करता है। हालाँकि यह अक्सर मुझे चरित्र सीमा से अधिक की ओर ले जाता है।
यहाँ एक फ़ंक्शन का एक उदाहरण है जो बहुत लंबा है ...
class ClientConnectionTest(unittest.TestCase):
def test_that_client_event_listener_receives_connection_refused_error_without_server(self):
self.given_server_is_offline()
self.given_client_connection()
self.when_client_connection_starts()
self.then_client_receives_connection_refused_error()
मेरे विकल्प:
आप बस कम विधि नाम लिख सकते हैं!
मुझे पता है, लेकिन मैं परीक्षण नामों की वर्णनात्मकता नहीं खोना चाहता।
आप लंबे नामों का उपयोग करने के बजाय प्रत्येक परीक्षण के ऊपर मल्टी-लाइन टिप्पणियां लिख सकते हैं!
यह एक सभ्य विचार है, लेकिन तब मैं अपनी IDE (PyCharm) के अंदर परीक्षण चलाने के दौरान परीक्षण के नाम नहीं देख पाऊंगा।
शायद आप बैकस्लैश (एक तार्किक लाइन निरंतरता चरित्र) के साथ लाइनों को जारी रख सकते हैं।
दुर्भाग्य से यह पायथन में एक विकल्प नहीं है, जैसा कि दान के उत्तर में वर्णित है।
आप अपनी परीक्षाओं को रोक सकते हैं।
यह कुछ तरीकों से समझ में आता है, लेकिन एक अच्छी तरह से स्वरूपित परीक्षण सूट को प्रोत्साहित करना अच्छा है।
आप लाइन की लंबाई सीमा बढ़ा सकते हैं।
हमारी टीम को सीमा रखना पसंद है क्योंकि यह संकीर्ण डिस्प्ले पर कोड को पठनीय रखने में मदद करता है, इसलिए यह सबसे अच्छा विकल्प नहीं है।
आप
testअपने तरीकों की शुरुआत से हटा सकते हैं ।यह एक विकल्प नहीं है। पायथन के परीक्षण धावक को शुरू करने के लिए सभी परीक्षण विधियों की आवश्यकता होती है
testया यह उन्हें नहीं उठाएगा।संपादित करें: कुछ परीक्षण धावक आपको परीक्षण कार्यों की खोज करते समय एक नियमित अभिव्यक्ति निर्दिष्ट करते हैं, हालांकि मैं ऐसा नहीं करूंगा क्योंकि यह परियोजना पर काम करने वाले सभी के लिए अतिरिक्त सेटअप है।
आप EventListener को उसकी अपनी कक्षा में अलग कर सकते हैं और उसका अलग से परीक्षण कर सकते हैं।
घटना श्रोता है अपने ही वर्ग में (और परीक्षण किया जाता है)। यह सिर्फ एक इंटरफ़ेस है जो क्लाइंटकॉन्क्शन के भीतर होने वाली घटनाओं से ट्रिगर हो जाता है। इस तरह के सुझाव से अच्छा इरादा लगता है, लेकिन यह गलत है और मूल प्रश्न का उत्तर देने में मदद नहीं करता है।
आप व्यवहार की तरह एक BDD फ्रेमवर्क का उपयोग कर सकते हैं । इसे अभिव्यंजक परीक्षणों के लिए डिज़ाइन किया गया है।
यह सच है, और मैं भविष्य में उनमें से अधिक का उपयोग करने की उम्मीद करता हूं। हालाँकि मैं अभी भी जानना चाहता हूँ कि कैसे रेखाओं में फ़ंक्शन नामों को विभाजित किया जाए।
अंततः ...
क्या पायथन में एक तरीका है कि एक लंबी फ़ंक्शन घोषणा को कई लाइनों में विभाजित किया जाए ?
उदाहरण के लिए...
def test_that_client_event_listener_receives_
connection_refused_error_without_server(self):
self.given_server_is_offline()
self.given_client_connection()
self.when_client_connection_starts()
self.then_client_receives_connection_refused_error()
या मुझे गोली काटकर खुद को छोटा करना पड़ेगा?
func.__doc__