我认为是因为assert引发仅接受可赎回。它评估看可调用对象是否引发异常,而不是语句本身是否引发异常。
self.assertRaises(AttributeError, getattr, branch[0], "childrennodes")
应该管用。
编辑:
正如THC4k正确地说的那样,它在收集时收集语句,然后将出错,而不是在测试时。
这也是为什么我喜欢鼻子的原因,它有一个装饰器(提花器),对于这种测试有用且更清晰。
@raises(AttributeError)
def test_1(self)
branch[0].childrennodes