2010-07-21 12 views
12

मैं अपवाद के लिए परीक्षण करने की कोशिश कर रहा हूं।assertRaises के साथ यूनिट टेस्ट समस्या

मेरे पास है:

def test_set_catch_status_exception(self): 
    mro = self.mro 
    NEW_STATUS = 'No such status' 
    self.assertRaises(ValueError,mro.setStatus(NEW_STATUS)) 

मैं निम्नलिखित त्रुटि मिलती है:

====================================================================== 
ERROR: test_set_catch_status_exception (__main__.TestManagementReviewGoalGetters) 
---------------------------------------------------------------------- 
Traceback (most recent call last): 
    File "test_ManagementReviewObjective.py", line 68, in test_set_catch_status_exception 
    self.assertRaises(ValueError,mro.setStatus(NEW_STATUS)) 
    File "/Users/eric/Dropbox/ManagementReview.py", line 277, in setStatus 
    raise ValueError('%s is not in the list of allowed statuses: %s' % (status,LIST_OF_STATUSES)) 
ValueError: No such status is not in the list of allowed statuses: ['Concern or Delay', 'On Track', 'Off Track/Needs Attention'] 

---------------------------------------------------------------------- 

धन्यवाद

उत्तर

29

self.assertRaises एक समारोह mro.setStatus, युक्तियों के स्वेच्छाचारी नंबर के बाद उम्मीद है: इस मामले में, बस NEW_STATUSself.assertRaises ब्लॉक के अंदर फ़ंक्शन कॉल mro.setStatus(NEW_STATUS) में अपने तर्कों को इकट्ठा करता है, इस प्रकार ValueError को पकड़ने और रिकॉर्ड करने पर यह रिकॉर्ड होता है।

self.assertRaises लिए एक तर्क के रूप mro.setStatus(NEW_STATUS) पासिंग ValueError का कारण बनता है इससे पहले कि self.assertRaises कर सकते हैं यह जाल होने के लिये।

तो ठीक एक अल्पविराम को कोष्ठकों बदलने के लिए है:

self.assertRaises(ValueError,mro.setStatus,NEW_STATUS) 
+0

कि यह किया! धन्यवाद। :) –

+0

@Eric: कोई समस्या नहीं।  – unutbu

+0

मैं पिचर्म आईडीई में पायथन 3.3 दुभाषिया का उपयोग कर रहा हूं। क्या होगा यदि मैं परीक्षण के तहत फ़ंक्शन में तर्क पारित करना चाहता हूं और वांछित त्रुटि नहीं उठाई गई स्थिति में एक संदेश भी शामिल करना है? उदाहरण - 'self.assertRaises (ValueError, person.set_age_method, -10, "त्रुटि: व्यक्ति की उम्र नकारात्मक नहीं हो सकती है।") इसके साथ, मुझे अपवाद मिलता है:' set_age_method 2 स्थितित्मक तर्क लेता है लेकिन 3 दिया गया था। मैं यह कैसे तय करुं ? बीटीडब्ल्यू, इस दावे के लिए दस्तावेज़ स्पष्ट रूप से आपको यह नहीं बताते हैं कि यह कैसे करें। https://docs.python.org/3/library/unittest.html#unittest.TestCase.assertRaises। ** kwds क्या है? – testerjoe2

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