2013-04-25 4 views
13

例外が発生したかどうかテストしたいのですが、どうすればいいですか?私はこの機能を、私がテストしたいもの持っている私のmodels.pyでValidationErrorが発生したかどうかのテスト

:テストの出力がある

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

:私のtests.pyで

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

を私はこれを試してみました:

..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

注意。 –

答えて

19

assertRaisesをコンテキストマネージャとして使用される。

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

または呼び出し可能と:そうでない場合は0 <=値<= 100` Pythonであなたの妥当性チェックが `書かれるべきであること

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

コンテキストマネージャーとしてのassertRaisesの使用はPython 2.7で追加されているため、CentOS 5.xでPythonをインストールしたシステムを使用する場合など、Python 2.6以前では使用できません。これは、CentOS 5.7のRPM構築プロセスにunittestsを統合しています。 – pcurry

+0

信じられないほど:) –

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