पर assertEquals बनाम assertEqual पाइथन unittest.TestCase
में assertEquals
और assertEqual
के बीच कोई अंतर है?पाइथन
और यदि नहीं है, तो दो कार्य क्यों हैं? केवल सुविधा के लिए?
पर assertEquals बनाम assertEqual पाइथन unittest.TestCase
में assertEquals
और assertEqual
के बीच कोई अंतर है?पाइथन
और यदि नहीं है, तो दो कार्य क्यों हैं? केवल सुविधा के लिए?
अच्छा सवाल!
असल में, पायथन 2.6 में, assertEqual
और assertEquals
failUnlessEqual
पर सुविधा उपनाम हैं। स्रोत उन्हें इस प्रकार की घोषणा की:
# Synonyms for assertion methods
assertEqual = assertEquals = failUnlessEqual
Python 3 में, अपने बात करने के लिए, स्पष्ट रूप से failUnlessEqual
मान्य नहीं है। assertEquals
अभिकथन तरीकों
# बहुवचन undocumented हैं के लिए इस टिप्पणी :-)
# समानार्थी किया जाता है। उपयोग को हतोत्साहित करने के लिए उन्हें इस तरह रखें।
# और अधिक जोड़ें नहीं। मत हटाओ।
# इन पर एक बहिष्करण चक्र के माध्यम से जाना कई लोगों को परेशान करेगा।
तो, नतीजा यह है कि आप का उपयोग करना चाहिए जो कुछ भी आप पायथन 2.x के लिए पसंद है, लेकिन अजगर 3.
मुझे http://docs.python.org/library/unittest.html में assertEquals का कोई उल्लेख नहीं मिला है। हालांकि, जब मैं टेस्टकेस आयात करता हूं और फिर "सहायता (टेस्टकेस)" करता हूं, तो यह सूचीबद्ध होता है। मुझे लगता है कि यह सुविधा के लिए सिर्फ एक पर्याय है।
हाँ, लेकिन वह बुरी तरह से "करने के लिए यह केवल एक स्पष्ट तरीका है" मंत्र :-( –
@Alex टूट जाता है - आप कोई मिल जाएगा उस पर मुझ से तर्क। –
के लिए assertEqual
की ओर जाते हैं मुझे लगता है कि यह "केवल एक स्पष्ट तरीका है के बीच तनाव था प्रकट होता है कुल कोड प्रवाह को semantically बनाने के लिए इसे "बनाम" उपनाम करने के लिए "। निजी तौर पर मैंने पाया मैं
failIf(some_condition)
से अधिक
assertFalse(some_condition)
को पढ़ने के लिए पसंद है, लेकिन अन्य दो से अधिक
assertEqual(a, b)
पसंद आया (assertEquals(a, b)
व्याकरण की मेरी भावना परेशान)।
"इसे करने का एकमात्र स्पष्ट तरीका" आगे बढ़ रहा है।
एक 3.3 अद्यतन: 26.3.7.1.1. Deprecated aliases से:
ऐतिहासिक कारणों से, testcase तरीकों के कुछ एक या अधिक उपनाम कि अब पदावनत कर रहे हैं था। निम्न तालिका उनके पदावनत उपनाम के साथ सही नाम सूचीबद्ध करता है:
Method Name | Deprecated alias | Deprecated alias
--------------+------------------+-----------------
assertEqual() | failUnlessEqual | assertEquals
...
सिर्फ अजगर के लिए 3.x, अजगर 2 के बाद से।7 assertEquals
रूप में अच्छी तरह पदावनत किया गया है:।
Method Name | Deprecated alias(es)
_________________________________________________________
assertEqual() | failUnlessEqual, assertEquals
असल में बहुवचन के बारे में टिप्पणी संदिग्ध है। यह कहता है कि "बहुवचन" अनियंत्रित हैं। आपका अंतिम वाक्य इंगित करता है कि आप इसे 'assertEquals' की तरह समाप्त होने वाले विधि नामों के अर्थ के रूप में समझते हैं। फिर भी व्याकरणिक रूप से, * बराबर * एक क्रिया का एक एकवचन (तीसरा व्यक्ति) रूप है, बहुवचन नहीं। मुझे लगता है कि आप सही ढंग से समझ गए कि टिप्पणी-लेखक का क्या अर्थ है, लेकिन 'बहुवचन' शब्द गलत है। – LarsH