如果在 Python 中引发并处理异常,则测试用例失败?

Fail Test Case if Exception is Raised and Handled in Python?

看看下面的测试用例:

def test_1_check_version(self):
    try:
        self.version()
        print('\n')
    except cx_Oracle.DatabaseError as error_message:
        print("Sorry Connection could not be established because "+str(error_message))

上面是我在Python的Unittest中写的很多测试用例的测试用例,现在我运行用它来检查数据库的连接是否连接。

如果是,则通过'Version number of Database'。

如果没有,就会抛出异常,我已经处理了。

在 运行 这个剩余用例之后,测试用例在我使用过的任何测试框架(Robot、unittest、pytest)中都显示通过。

但是,我希望这个测试用例失败,因为它不是我要找的结果。

处理异常,因为我想看到唯一的错误信息,而不是所有那些红线的异常。

我愿意接受任何类型的建议,无论是否涉及删除例外。

通过测试的行为是预期的。只有当您收到某些断言中未预期的结果时,测试才会失败。

在你的情况下,如果你想抛出异常,你应该使用:

self.assertRaises(cx_Oracle.DatabaseError, self.version())

如果要检查版本是否正确,则使用:

self.assertEqual(XXX, self.version())

其中 XXX 是您期望的 self.version() 的值

since version 2.7: Added the ability to use assertRaises() as a context manager

所以推荐的用法是

with self.assertRaises(SomeException) as cm:
    self.version()

the_exception = cm.exception
self.assertEqual(the_exception.error_code, 3)

see document