在Python unittest
框架中,如果未引發異常,是否有方法通過單元測試,否則將失敗並返回AssertRaise?如果沒有引發異常,請通過Python單元測試
回答
如果我正確理解你的問題,你可以做這樣的事情:
def test_does_not_raise_on_valid_input(self):
raised = False
try:
do_something(42)
except:
raised = True
self.assertFalse(raised, 'Exception raised')
...假設你有一個相應的測試正確Exception
被上調無效的輸入,當然:
def test_does_raise_on_invalid_input(self):
self.assertRaises(OutOfCheese, do_something, 43)
然而,正如評論指出的那樣,你需要考慮它是什麼,你是實際上測試。這可能是一個測試像...
def test_what_is_42(self):
self.assertEquals(do_something(42), 'Meaning of life')
...更好,因爲它測試系統所需的行爲,如果一個異常是提出將失敗。
恕我直言,這樣的事情應該是unittest.TestCase類的一部分,這是一個尷尬的事情要,但我不能是唯一想要的人。 – 2011-05-30 23:50:52
@Levi Campbell:我同意,一個'assertDoesNotRaise()'方法會更簡潔。 N.B:自從你接受之後,我編輯了我的答案。 – Johnsyweb 2011-05-30 23:57:20
爲什麼要先弄個例外,然後再提出一個例外?只要調用'do_something()',並且如果引發異常,測試會自動失敗。這也是'assertDoesNotRaise()'不存在的原因。 – 2011-05-31 02:16:19
本頁面上的許多評論將錯誤和失敗視爲等同的,但事實並非如此。在我看來,正確的解決方案是在引發異常的情況下明確地通過測試。例如:
def test_does_not_error(self):
try:
code_under_test()
except ThatException:
self.fail("code_under_test raised ThatException")
同意 - 雖然控制檯輸出的錯誤和失敗的解析相當於人類閱讀,大多數自動化的單元測試工具對待兩者是完全不同的,對嗎? – hBy2Py 2015-10-08 02:17:36
正如在Sven的評論中指出的那樣,只需調用你的功能,例如, do_something()
。如果引發未處理的異常,測試會自動失敗!真的沒有理由做其他事情。這也是爲什麼assertDoesNotRaise()
不存在的原因。
爲什麼downvote?答案非常準確。 – 2017-08-04 02:22:23
- 1. 測試如果投擲OleVariant會引發異常(沒有引發異常)
- 2. Python單元測試與嘲笑request.get,沒有引發特定的異常
- 3. 如何在單元測試簡單方法時引發異常
- 4. FMDB單元測試如果創建表成功沒有通過
- 5. Promise.catch()在AngularJS單元測試中沒有發現異常
- 6. pytest:如何在單元測試期間強制引發異常?
- 7. Python單元測試:我如何測試異常中的參數?
- 8. Java單元測試異常
- 9. 單元測試異常
- 10. UICollectionView在快速單元測試中出隊引發異常
- 11. Python單元測試有沒有像'autotest'?
- 12. 如何聲明C#異步方法在單元測試中引發異常?
- 13. C#:如何在我的單元測試中檢查「沒有發生異常」?
- 14. Python單元測試沒有運行
- 15. Python:在單元測試中assertRaises錯誤...沒有被捕獲的異常
- 16. 單元測試通過枚舉引發Singleton拋出java.lang.NoClassDefFoundError
- 17. 如何測試沒有異常拋出?
- 18. getdate()通過resultset查詢引發沒有當前行異常
- 19. 單元測試項目奧爾良文件沒有發現異常
- 20. RSpec測試在rails中引發異常
- 21. 引發異常的測試函數
- 22. bitly引發錯誤異常rspec測試
- 23. 測試幾行中引發的異常
- 24. 在JUnit中測試引發的異常
- 25. Eclipse中的Junit測試引發異常
- 26. 調試單元使用Resharper 7 for MBUnit進行的測試引發異常
- 27. Python的單元測試報告通過測試
- 28. 如何斷言沒有引發異常?
- 29. 如何單元測試從回調函數發生的異常
- 30. 如何測試是否在單元測試中出現異常
我只有在測試遺留代碼並進行一系列完整性測試時才發現需要這樣做。這些都是沒有任何Asserts的測試(基本上驗證代碼塊不會爆炸而執行)。任何意外的異常無論如何都會使測試失敗 - 不確定Python框架是否與xUnit系列類似。 – Gishu 2011-06-01 05:16:54
可能的重複:http://stackoverflow.com/questions/4319825/python-unittest-opposite-of-assertraises – 2014-11-13 01:53:49