【发布时间】:2014-04-03 16:15:22
【问题描述】:
我想捕捉代码产生的 TypeError,但不幸的是,unittest 失败了:
代码如下:
import unittest
class _Foo(object):
def __init__(self):
self.bar = ['AAA']
def _validate_bar(self, bar):
if not isinstance(bar, list):
raise TypeError
return True
class Foo(_Foo):
def __init__(self, bar=None):
super(Foo, self).__init__()
if bar and self._validate_bar(bar):
self.bar = bar
class FooTest(unittest.TestCase):
def test_bar_as_string(self):
self.assertRaises("TypeError", Foo("a"))
#def test_a(self):
# try:
# Foo('a')
# except Exception as exc:
# self.assertEqual('TypeError', exc.__class__.__name__)
#def test_bar_as_string(self):
# with self.assertRaises("TypeError"):
# Foo("a")
if __name__ == "__main__":
这是错误:
test_bar_as_string (__main__.FooTest) ... ERROR
======================================================================
ERROR: test_bar_as_string (__main__.FooTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "test.py", line 21, in test_bar_as_string
self.assertRaises("TypeError", Foo("a"))
File "test.py", line 15, in __init__
if bar and self._validate_bar(bar):
File "test.py", line 9, in _validate_bar
raise TypeError
TypeError
----------------------------------------------------------------------
Ran 1 test in 0.000s
FAILED (errors=1)
unittest.main(verbosity=2)
【问题讨论】:
标签: python unit-testing assert