2013-04-25 10 views
13

मैं परीक्षण करना चाहता हूं कि कोई अपवाद उठाया गया है, तो मैं यह कैसे कर सकता हूं?परीक्षण करें यदि प्रमाणीकरण त्रुटि उठाई गई

def test_validate_percent(self): 
    self.assertRaises(ValidationError, validate_percent(1000)) 

परीक्षण के उत्पादन में है: मैं इस कोशिश की

def validate_percent(value): 
    if not (value >= 0 and value <= 100): 
     raise ValidationError('error') 

मेरी tests.py में:

मेरी models.py में

मैं इस समारोह है, एक मैं परीक्षण करना चाहते हैं :

..E 
====================================================================== 
ERROR: test_validate_percent (tm.tests.models.helpers.HelpersTestCase) 
---------------------------------------------------------------------- 
Traceback (most recent call last): 
    File "/...py", line 21, in test_validate_percent 
    self.assertRaises(ValidationError, validate_percent(1000)) 
    File "/....py", line 25, in validate_percent 
    raise ValidationError(u'error' % value) 
ValidationError: ['error'] 
+1

ध्यान दें कि अजगर में अपने सत्यापन जाँच लिखा जाना चाहिए 'यदि नहीं 0 <= मूल्य <= 100' । –

उत्तर

19

assertRaises एक संदर्भ प्रबंधक के रूप में प्रयोग किया जाता है:

def test_validate_percent(self): 
    with self.assertRaises(ValidationError): 
     validate_percent(1000) 

या एक प्रतिदेय साथ:

def test_validate_percent(self): 
    self.assertRaises(ValidationError, validate_percent, 1000) 
+1

एक प्रबंधक प्रबंधक के रूप में assertRaises का उपयोग Python 2.7 में जोड़ा गया था, इसलिए यह Python 2.6 या पुराने पर उपलब्ध नहीं है - जैसे कि सिस्टम का उपयोग करते समय CentOS 5.x पर पाइथन स्थापित किया जाता है। यह मुझे CentOS 5.7 पर आरपीएम निर्माण प्रक्रिया में unittests एकीकृत करने के लिए थोड़ा सा। – pcurry

+0

अविश्वसनीय :) –

2
def test_validate_percent(self): 
    self.assertRaises(ValidationError, validate_percent, 1000) 
संबंधित मुद्दे