此代码无法按预期方式工作。预计失败时我会通过;并期望通过assertRaises()时失败。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
@Mark,@DavidCullen:确保传入的内容是参考似乎解决了它不标记异常的问题。但是,如果我取消注释'#raise Exception(ReferenceError)'测试仍然失败!? '''Traceback(最近调用最后一个): 文件“C:\ ... \ test_db.py”,第5行,在test_close中 self.assertRaises(ReferenceError,self.close_database) 文件“C:\ Anaconda2 \文件“C:\ ... \ test_db.py”,第9行,在close_database中 raise Exception(ReferenceError) 例外:''' –
kashiraja
你试过了吗?引用ReferenceError(“这是一个错误。”)'而不是'raise Exception(ReferenceError)'? @kashiraja – Mark
__这似乎工作...真棒!__我真的在这里的新领域.. Thx为您的帮助! – kashiraja