Unittest assertRaises cannot handle exception raised inside __getattr__ method. Is it a bug? or am I missing something obvious?
Here is a sample of this problem: ------------------------------------------------------------- import unittest class C(): def simple_attr(self): raise AttributeError def __getattr__(self, name): raise AttributeError class Test(unittest.TestCase): def test_simple_attr(self): c = C() self.assertRaises(AttributeError, c.simple_attr) def test_getattr(self): c = C() self.assertRaises(AttributeError, c.foo) unittest.main() ----------------------------------------------------- Unittest assertRaises handles simple attribute lookup but the exception inside __getattr__ bypasses unittest and generates traceback: ------------------------------------------------------ E. ====================================================================== ERROR: test_getattr (__main__.Test) ---------------------------------------------------------------------- Traceback (most recent call last): File "xxx.py", line 19, in test_getattr self.assertRaises(AttributeError, c.foo) File "xxx.py", line 9, in __getattr__ raise AttributeError AttributeError ---------------------------------------------------------------------- Ran 2 tests in 0.000s FAILED (errors=1) -------------------------------------------------------------------------------------------------- It doesn't matter what kind of exception it raises. Any exception inside __getattr__ bypasses assertRaises. This happens both with 3.1.2 and 2.6.5. Any idea? Inyeol -- http://mail.python.org/mailman/listinfo/python-list