में फायदे या अंतर क्या हैं मैं परीक्षण लिख रहा हूं और मैंने कुछ लोगों को assert False
के बजाय self.assertFalse
का उपयोग करने के लिए कहा है। यह क्यों है और क्या कोई फायदे हैं?"जोर दें झूठी" और "self.assertFalse"
उत्तर
assert False
उपयोगी लॉगिंग जानकारी के बिना अपवाद फेंकता है। परीक्षण में एक त्रुटि थी।
self.assertFalse()
किसी संदेश और परीक्षण नाम जैसी परीक्षण विफलता जानकारी के साथ परीक्षण विफलता अपवाद फेंकता है।
त्रुटि के बीच एक अंतर है - परीक्षण भी नहीं चला सका - और विफलता - परीक्षण कोड काम करता था लेकिन गलत जवाब उत्पन्न करता था।
त्रुटियां आपके कोड के साथ एक गंभीर समस्या है।
असफलताएं केवल विफलताओं हैं जिन्हें ठीक करने की आवश्यकता है।
आप चलाने
import unittest
class Test_Unittest(unittest.TestCase):
def test_assert(self):
assert False
def test_assertFalse(self):
self.assertFalse(True)
if __name__ == '__main__':
unittest.main()
आप एक ही प्रवेश जानकारी प्राप्त करते हैं, तो एक ही विफलता:
FF
======================================================================
FAIL: test_assert (__main__.Test_Unittest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/unutbu/pybin/test.py", line 6, in test_assert
assert False
AssertionError
======================================================================
FAIL: test_assertFalse (__main__.Test_Unittest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/unutbu/pybin/test.py", line 8, in test_assertFalse
self.assertFalse(True)
AssertionError
----------------------------------------------------------------------
Ran 2 tests in 0.000s
FAILED (failures=2)
कारण दोनों एक ही नियंत्रित किया जाता है क्योंकि unittest.TestCase
को परिभाषित करता है
failureException = AssertionError
है जब आप कहते हैं कि assert False
एक AssertionError उठाया गया है।
जब आप self.assertFalse(True)
कहते हैं, तो failureExeception
उठाया जाता है।
चूंकि ये अपवाद समान हैं, इसमें कोई स्पष्ट अंतर नहीं है।
assert
और self.assertFalse
हालांकि पारंपरिक उपयोग में भिन्नता है।
assert
का उपयोग यह घोषणा करने के लिए किया जाता है कि कोड में एक निश्चित बिंदु पर एक निश्चित स्थिति होनी चाहिए। इसका विकास के दौरान एक क्रैच के रूप में प्रयोग किया जाता है, लेकिन इसका उत्पादन उत्पादन कोड में उपयोग नहीं किया जाता है। यदि आप python -O my_unittest.py
चलाते हैं, तो सभी जोर देने वाले बयानों को अनदेखा कर दिया जाता है। इससे assert
के आपके इच्छित उपयोग को विचलित कर दिया जाएगा, संभवतः विफल होने पर भी आपके यूनिट परीक्षण पास हो जाएंगे।
भले ही (ओ-फ्लैग के बिना) परिणाम समान है, assert
इकाई परीक्षण कोड में उपयोग करने के लिए नहीं है। इकाई परीक्षण लिखते समय self.assertTrue
या self.assertFalse
का उपयोग करें।
# test_this_and_that.py
def test_frobber():
assert frobber('x') == 'y'
# EOF
बिना:
।assertFalse (True) 'आप (और शायद चाहिए)' self.fail() 'का उपयोग कर सकते हैं। – freaker
एक बात जवाब अब तक का उल्लेख विफल रहे हैं कई परीक्षण चौखटे (py.test जैसे और nose) कि उपयोग अजगर का आत्मनिरीक्षण जादू तुम इतनी तरह इकाई परीक्षण लिखने के लिए अनुमति देने के लिए देखते हैं कि है ऊपर देखे गए सबसे अजीब बॉयलरप्लेट की आवश्यकता है। तो कुछ मामलों में यह सिर्फ एक framwork/स्टाइलिस्ट मुद्दे के लिए उबाल सकता है।
- 1. कस्टम सी ++ जोर दें मैक्रो
- 2. जोर दें बनाम जुनीट एसेशन
- 3. राइनो मोक्स: "सत्यापित करें" बनाम "जोर दें"
- 4. जोर दें कि अनुरोध क्रिया POST
- 5. गतिशील संदेश के साथ जोर दें?
- 6. शून्य || झूठी और झूठी || रूबी
- 7. जोर दें कि विजुअल स्टूडियो 2008 टेस्ट फ्रेमवर्क
- 8. जोर दें कि दो जावा बीन्स बराबर हैं
- 9. जोर
- 10. झूठी
- 11. jquery: event.stopImmediatePropagation() बनाम झूठी झूठी
- 12. Django - खाली = झूठी, आवश्यक = झूठी
- 13. झूठी साझाकरण और परमाणु चर
- 14. सी # सच्चाई और झूठी मूल्य
- 15. झूठी साझाकरण और ढेर चर
- 16. SipManager.isApi समर्थित() और SipManager.isVoipSupported() झूठी
- 17. जोर से :: device_vector कच्चे सूचक और वापस?
- 18. अजीब जोर तार्किक और बूल चर पर
- 19. आप अपने जोर वर्ग
- 20. साइनएडएक्सएमएल चेकसिग्नेचर झूठी
- 21. जब जोर दें() विफल रहता है, प्रोग्राम निकास कोड क्या है?
- 22. संगठन मोड: रक्षा जोर
- 23. pytest: जोर लगभग बराबर
- 24. संकलन-समय पर जोर दें जब सभी enum मानों को C++
- 25. PHP in_array() हमेशा झूठी
- 26. कैसे जोर दें कि किसी विशेष श्रेणी में उसके लेआउट में कोई vtbl पॉइंटर्स नहीं है?
- 27. एसक्यूएल झूठी
- 28. सत्य/झूठी
- 29. यह झूठी और सच क्यों लौटता है?
- 30. पढ़ना स्रोत कोड जोर से
धन्यवाद, जो जानना उपयोगी बनाता है, मुझे 'जोरदार झूठी' रेखाओं को हटाने की आवश्यकता होगी। +1 – chrissygormley
हाय, यह स्पष्ट रूप से गलत है। परीक्षण धावक को 'AssertionError' पकड़ना चाहिए (और करता है) और परीक्षण विफलताओं के रूप में उन्हें सही तरीके से रिपोर्ट करें। 'स्वयं का उपयोग करने के बजाय – wim