2015-10-19 11 views
22

किसी सेवा को प्रश्न सबमिट करने के बाद, मुझे एक शब्दकोश/एक सूची वापस मिलती है और मैं यह सुनिश्चित करना चाहता हूं कि यह खाली नहीं है। मैं पाइथन 2.7 पर हूं।क्या कोई अस्थिर खाली नहीं है तो पाइथन के साथ जांचने का कोई तरीका है?

मुझे आश्चर्य है कि मुझे unittest.TestCase कक्षा उदाहरण के लिए assertEmpty विधि दिखाई नहीं दे रही है।

जैसे मौजूदा विकल्प:

self.assertTrue(bool(d)) 

और

self.assertNotEqual(d,{}) 

और

self.assertGreater(len(d),0) 

सिर्फ सही नहीं लगते।

क्या इस तरह की विधि पाइथन एकजुट ढांचे में गायब है? यदि हां, तो यह कहने का सबसे महत्वपूर्ण तरीका क्या होगा कि एक अस्थिर खाली नहीं है?

+1

http://stackoverflow.com/questions/53513/best-way-to-check-if-a-list-is-empty कुछ मदद की हो सकती है। – CollinD

+0

अच्छा लिंक! मुझे पता है कि कैसे एक अस्थिर खाली है या नहीं; विशेष रूप से unittest assert विधियों की तलाश में था ... आश्चर्यचकित कोई assertEmpty/assertNotEmpty तरीकों नहीं है - imho यह पठनीयता के बजाय बहुत अधिक पठनीयता में सुधार करेगा, कथन और assert कोड के चारों ओर झूठ बोलना ... –

+2

सहमत, बस लगा कि 'assertTrue' है शायद एक टैड क्लीनर। मुझे लगता है कि मेरी व्यक्तिगत वरीयता (और शायद सबसे अर्थपूर्ण रूप से सार्थक विकल्प) लेन को ज़ोर देना होगा! = 0. मैं इस बात से सहमत हूं कि एक assertEmpty/assertNotEmpty विधि में सबसे अजीब ढांचे में एक जगह है। – CollinD

उत्तर

39

खाली सूचियों/dicts झूठी है, इसलिए self.assertTrue(d) काम किया हो जाता है का मूल्यांकन।

+0

दाएं। तो अचूकता में कोई जोरदार तरीके नहीं है जो खालीपन की जांच करेगा? Asserting करने के लिए परेशान करना और जोर देना कोड के चारों ओर झूठ बोलना ... –

+0

खालीपन की जांच करने के लिए कोई जोरदार विधि नहीं है - [unittest] (https://docs.python.org/2/library/unittest.html#assert-methods)। – gplayer

1

शायद:

self.assertRaises(StopIteration, next(iterable_object)) 
+2

यह सामान्य रूप से आदर्श नहीं है, क्योंकि यह उस आइटम का उपभोग कर सकता है जिसे आपको बाद में देखने की आवश्यकता है। – chepner

+0

सर्वश्रेष्ठ एक लाइनर, क्योंकि यह जेनरेटर के लिए भी काम करता है। यदि आप खाली खाली करने के लिए परीक्षण कर रहे हैं, तो आपको इसकी वस्तुओं को देखने की आवश्यकता नहीं है। –

+0

वह अपवाद नहीं पकड़ पाएगा, आपको इसे एक फ़ंक्शन के अंदर रखना होगा। –

4

बिल्कुल वही निर्भर करता है जो आप खोज रहे हैं।

क्या आप वाकई वस्तु एक iterable है बनाना चाहते हैं और इसे खाली नहीं है, तो:

# TypeError: object of type 'NoneType' has no len() 
# if my_iterable is None 
self.assertTrue(len(my_iterable)) 

अगर यह ठीक है वस्तु के लिए होने के लिए परीक्षण किया जा रहा None:

self.assertTrue(my_maybe_iterable) 
संबंधित मुद्दे

 संबंधित मुद्दे