0

我正在使用 Python 编写单元测试assertEqual

def test_SetOwner(self, owner):
   self.objectid.SetOwner(owner)
   self.assertEqual(self.objectid.GetOwner(), owner)

这在大多数情况下都有效,但在某些特定情况下,RuntimeErrorCould not execute.... 但是,这应该不会触发单元测试套件中的错误。

有没有一种方法可以以某种方式使assertEqual以该特定字符串开头的 RuntimeErrors 不失败,同时仍捕获所有其他 RuntimeErrors?或者有没有更好的方法来处理这个?

4

1 回答 1

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)

但正如我在上面的评论中提到的,这看起来不是一个很好的单元测试。例如,如果GetOwner()在某个时候引入了一个错误,因此它总是引发“无法执行”RuntimeError怎么办?这几乎肯定不是所期望的行为,但您的测试将继续通过。

于 2013-04-04T16:22:44.193 回答