2012-05-23 10 views
5

मैं पाइथन परियोजना के लिए परीक्षण लिखने के लिए नाक 1.1.2 का उपयोग कर रहा हूं। यह assert_raises फ़ंक्शन है जो दस्तावेज़ में उल्लिखित होता है लेकिन मुझे इसे कहीं भी नहीं मिल रहा है।नाक के assert_raises समारोह कहां है?

value_error_raised = False 
try: 
    do_something_that_should_raise_value_error() 
except ValueError: 
    value_error_raised = True 
assert value_error_raised 

type_error_raised = False 
try: 
    do_something_else_that_should_raise_type_error() 
except TypeError: 
    type_error_raised = True 
assert type_error_raised 

कि बन जाएगा:

वह कुछ इस तरह के लिए एक आशुलिपि होना चाहिए

assert_raises(ValueError, 
       do_something_that_should_raise_value_error) 

assert_raises(TypeError, 
       do_something_else_that_should_raise_type_error) 

मैं पहले से ही स्रोत कोड खोज की है और मैंने पाया केवल उल्लेख tools.py में था मॉड्यूल, raises दस्तावेज के अंदर:

यदि आप अपवादों के बारे में कई दावों का परीक्षण करना चाहते हैं एक परीक्षण में, आप इसके बजाय assert_raises का उपयोग करना चाह सकते हैं।

क्या यह कार्य नाक से हटा दिया गया था? यदि हां, तो क्या कोई मुझे समझने में मदद कर सकता है क्यों?

उत्तर

7
>>> from nose.tools import assert_raises 
>>> assert_raises 
<bound method Dummy.assertRaises of <nose.tools.Dummy testMethod=nop>> 
>>> import nose 
>>> nose.__version__ 
'1.1.2' 

मैं व्यक्तिगत रूप से unittest2.TestCase कक्षाओं को nosetests के साथ उपयोग करता हूं, और self.assertRaises का उपयोग करता हूं।

+0

ठीक है, यह काम करता है! धन्यवाद! मुझे अभी एहसास हुआ कि इसका कारण नाक पर स्पष्ट रूप से परिभाषित नहीं किया गया है। टोल यह है कि क्योंकि यह unittest के माध्यम से एक कामकाज है। टेस्टकेस assertRaise कार्यान्वयन। नतीजतन ग्रहण 'nose.tools आयात assert_raises' पर आयात त्रुटि की रिपोर्ट करना जारी रखें। – tbellardi

+0

यह सिर्फ इतना नहीं है कि PyDev गलत है, Jython का उपयोग करके एक बड़ी परियोजना में मुझे याद है कि सौ से अधिक पहचानकर्ताओं के लिए अपवाद जोड़ना है ... –

5

अपने परीक्षण फ़ंक्शन पर @raises(*exceptions) सजावट का उपयोग करें।

+4

यह सत्यापित करता है कि अपवादों में से एक उठाया गया था, इसलिए मुझे उठाए गए प्रत्येक अपेक्षित त्रुटि के लिए एक परीक्षण कार्य की आवश्यकता होगी। यदि मैं उठाए गए कई अपवादों को सत्यापित करने के लिए एक एकल परीक्षण फ़ंक्शन चाहता हूं, तो इससे मेरी सहायता नहीं होती है। – tbellardi

1

यह उत्तर इस कारण पर लागू होता है कि आप assert_raises के बारे में जानकारी क्यों नहीं प्राप्त कर सकते हैं।

nose documentation से

:

nose.tools मॉड्यूल प्रदान करता है [...] unittest.TestCase में पाया एक ही assertX तरीकों (केवल पीईपी 8 फैशन में लिखे गए, बल्कि assertEqual से इतना assert_equal)

के सभी

यहां पाइथन के मूल दस्तावेज़ में PEP 8's suggested function naming और list of assertX methods हैं।

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