16

例外が発生したかどうかをテストしたいのですが、どうすればよいですか?

私のmodels.pyには、テストしたいこの関数があります:

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

私のtests.pyで私はこれを試しました:

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

テストの出力は次のとおりです。

..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']
4

2 に答える 2

26

assertRaisesコンテキストマネージャとして使用されます:

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

または呼び出し可能オブジェクトを使用:

def test_validate_percent(self):
    self.assertRaises(ValidationError, validate_percent, 1000)
于 2013-04-25T12:33:02.043 に答える
3
def test_validate_percent(self):
    self.assertRaises(ValidationError, validate_percent, 1000)
于 2013-04-25T12:34:00.357 に答える