所以我有狗课:
class Dog:
def __init__(self, res):
self._res = res
def error(self):
raise IndexError
和单元测试:
class TestDog(unittest.TestCase):
def setUp(self):
self.dog = Dog([1,2])
def testError(self):
self.assertRaises(IndexError, self.dog.error())
为什么测试用例 testError 失败? self.dog.error() 应该会导致 IndexError 被引发,并且我相信 assertRaises 的格式正确。
感谢任何帮助,谢谢。
最佳答案
当 Python 运行 self.assertRaises(IndexError, self.dog.error())
行时,它必须先计算 self.assertRaises
方法的参数将它们传递给它,因此它调用 self.dog.error() ,从而引发错误。这就是所有功能的工作原理。 self.assertRaises 的存在并不能阻止错误的发生。您应该调用 self.assertRaises(IndexError, self.dog.error) ,其中第二个参数现在是实际的函数/方法对象 self.dog.error ,而不需要还没打电话呢。 self.assertRaises
会为您调用它,并封装在 try/except 中,以便它可以正确执行测试。
或者:
with self.assertRaises(IndexError):
self.dog.error()
关于Python unittest 测试用例捕获错误失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40604829/