我正在使用assertEqual
:
def test_SetOwner(self, owner):
self.objectid.SetOwner(owner)
self.assertEqual(self.objectid.GetOwner(), owner)
这适用于大多数情况,但在某些特定情况下,RuntimeError
以Could not execute...
开头会失败。但是,这是预期的,不应该在unittest套件中触发错误。
是否有一种方法以某种方式使assertEqual
在运行时错误上失败,从此特定字符串开始,同时仍然捕获所有其他RuntimeErrors?或者有更好的方法来解决这个问题吗?
答案 0 :(得分:2)
您可以使用try/except
块执行此操作,并分别检查这两种情况。
def test_SetOwner(self, owner):
self.objectid.SetOwner(owner)
try:
owner_prime = self.objectid.GetOwner()
except RuntimeError as e:
self.assertTrue(e.args[0].startswith("Could not execute"))
else:
self.assertEqual(owner, owner_prime)
但正如我在上面的评论中提到的,这看起来不是一个非常好的单元测试。例如,如果某个bug在某个时刻被引入GetOwner()
,那么它总会引发"无法执行" RuntimeError
?这几乎肯定不是理想的行为,但你的测试将继续通过。