鍍金池/ 問答/Python  測試/ python的unittest能不能期待一個(gè)錯(cuò)誤出現(xiàn)而通過測試,不報(bào)錯(cuò)?

python的unittest能不能期待一個(gè)錯(cuò)誤出現(xiàn)而通過測試,不報(bào)錯(cuò)?

請問python的unittest能不能期待一個(gè)錯(cuò)誤出現(xiàn)而通過測試,不報(bào)錯(cuò)?
比如下邊的代碼運(yùn)行時(shí)會拋出一個(gè)ERROR,有沒有可能換一個(gè)測試函數(shù)實(shí)現(xiàn)順利通過測試(出來一個(gè)點(diǎn))?改成assertRaises也是要報(bào)錯(cuò)。
謝謝。

import unittest
class TestStringMethods(unittest.TestCase):
        
    def test_score(self):
        self.failUnlessRaises(ZeroDivisionError, 1/0)

if __name__ == '__main__':
    unittest.main()

回答
編輯回答
清夢
import unittest
class TestStringMethods(unittest.TestCase):
        
    def test_score(self):
        with self.assertRaises(ZeroDivisionError):
            1/0

if __name__ == '__main__':
    unittest.main()
2017年12月13日 22:47
編輯回答
舊螢火
  • “斷言”只管判斷,而不在乎判斷的東西到底什么。
  • 異常不是“斷言”這個(gè)層面考慮的問題。
  • 你的問題自己 try 起來就完了。
def fail_unless_raises(error_type, func):
    try:
        func()
    except error_type:
        return
    else:
        raise Exception('xxx')


fail_unless_raises(ZeroDivisionError, lambda: 1/1)
2017年12月11日 09:33