मैं TestCase
सबक्लास में एक कस्टम जोर विधि जोड़ना चाहता हूं। मैंने unittest
मॉड्यूल से अपने कार्यान्वयन की प्रतिलिपि बनाने की कोशिश की ताकि यह नियमित रूप से TestCase
के व्यवहार को जितना संभव हो सके मिल सके। (मैं सिर्फ self.assertEqual()
पर प्रतिनिधि होना पसंद करूंगा लेकिन इससे नीचे और भी पीछे का शोर होता है, नीचे देखें।) unittest
मॉड्यूल विफल होने पर रिपोर्टिंग के दौरान अपने कार्यान्वयन के कुछ आंतरिक विवरण स्वचालित रूप से छिपाने लगता है।टेस्टकेस सबक्लास में मैं अपने स्टैक फ्रेम को कैसे छिपा सकता हूं?
import unittest
class MyTestCase(unittest.TestCase):
def assertLengthIsOne(self, sequence, msg=None):
if len(sequence) != 1:
msg = self._formatMessage(msg, "length is not one")
raise self.failureException(msg)
class TestFoo(MyTestCase):
seq = (1, 2, 3, 4, 5)
def test_stock_unittest_assertion(self):
self.assertEqual(len(self.seq), 1)
def test_custom_assertion(self):
self.assertLengthIsOne(self.seq)
unittest.main()
इस के उत्पादन में इस तरह के रूप में है:
[email protected] $ python unittest-demo.py
FF
======================================================================
FAIL: test_custom_assertion (__main__.TestFoo)
----------------------------------------------------------------------
Traceback (most recent call last):
File "unittest-demo.py", line 16, in test_custom_assertion
self.assertLengthIsOne(self.seq)
File "unittest-demo.py", line 7, in assertLengthIsOne
raise self.failureException(msg)
AssertionError: length is not one
======================================================================
FAIL: test_stock_unittest_assertion (__main__.TestFoo)
----------------------------------------------------------------------
Traceback (most recent call last):
File "unittest-demo.py", line 13, in test_stock_unittest_assertion
self.assertEqual(len(self.seq), 1)
AssertionError: 5 != 1
----------------------------------------------------------------------
Ran 2 tests in 0.000s
FAILED (failures=2)
ध्यान दें कि कस्टम ज़ोर विधि दो फ्रेम, विधि के अंदर ही एक साथ एक स्टैक ट्रेस का कारण बनता है, जबकि शेयर unittest
विधि केवल एक ही है फ्रेम, उपयोगकर्ता के कोड में प्रासंगिक रेखा। मैं इस फ्रेम-छिपाने वाले व्यवहार को अपनी विधि में कैसे लागू कर सकता हूं?
मुझे विश्वास नहीं है कि इस प्रश्न/उत्तर को अधिक वोट प्राप्त नहीं हुए हैं! महान जानकारी और वास्तव में मैं क्यों <3 SO। – dbn
यह समाधान इतना उपयोगी है! –
यह सुनिश्चित नहीं है कि python.org पर पाइपमेल बदल गया है लेकिन पीटर के समाधान का सही लिंक https://mail.python.org/pipermail/python-list/2012- ऑक्टेट/632386.html है। इसके अलावा पॉइंटर के लिए आपको बहुत बहुत धन्यवाद, वास्तव में मेरी मदद की। –