测试是否引发ValidationError
问题描述:
我想测试是否引发异常我该怎么做?测试是否引发ValidationError
在我的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']
答
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
在Python 2.7中增加了使用assertRaises作为上下文管理器,所以它在Python 2.6或更旧版本中不可用 - 比如在CentOS 5.x上使用系统安装的Python时。这一点我整合到CentOS 5.7的RPM构建过程中。 – pcurry 2013-04-25 13:22:07
+0
难以置信:) – 2018-02-20 08:41:59
答
def test_validate_percent(self):
self.assertRaises(ValidationError, validate_percent, 1000)
注意,在Python您的验证检查应写入'如果不为0 2013-04-25 12:57:53