如果在Python中引发并处理了异常,则无法通过测试案例?

时间:2018-09-26 12:25:44

标签: python unit-testing automated-tests python-unittest

看看下面的测试用例:

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,pytest)中显示通过。

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

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

无论是否涉及删除例外,我都会接受任何建议。

2 个答案:

答案 0 :(得分:0)

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

对于您的情况,如果希望引发异常,则应使用:

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

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

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

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

答案 1 :(得分:0)

  

从2.7版开始:增加了使用assertRaises()作为上下文管理器的功能

所以推荐的用法是

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

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

see document