此代码无法按预期工作。期待失败时,我正在通过;期望assertRaises()传递时失败。
test_db.py:
import unittest
class TestConnectDatabase(unittest.TestCase):
def test_close(self):
self.assertRaises(ReferenceError, self.close_database()) # <--- Problem #1
pass
# Just a stub for brevity...
def close_database(self):
#raise Exception(ReferenceError) # <--- Problem #2
pass
if __name__ == '__main__':
unittest.main()
在此示例中,即使未引发异常,代码也会通过单元测试。如果取消注释#raise
,则只会将异常传递给命令行,并且在应该通过时测试失败。
使用以下方法执行测试:
python -m test_db
或python test_db.py
答案 0 :(得分:1)
当您应该传递对它的引用时,您正在调用方法self.close_database
。删除括号,例如
def test_close(self):
self.assertRaises(ReferenceError, self.close_database)
查看the docs了解详情。
答案 1 :(得分:1)
删除self.close_database
后的括号:
class TestConnectDatabase(unittest.TestCase):
def test_close(self):
self.assertRaises(ReferenceError, self.close_database)
pass
您正在调用self.close_database
,这意味着其结果(None
)会传递给assertRaises
。请参阅assertRaises
的文档。