如果在 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)
看看下面的测试用例:
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)