我想知道如何在Python中引發異常?我用assertRaises(ExpectedException)試了一下,但測試失敗了,控制檯輸出告訴我預期的異常被引發了。
那麼我怎麼寫這個,這樣Exception纔會被捕獲並被正確地聲明?如何使用PyUnit在Python中聲明一個引發的自定義異常?
-1
A
回答
1
AssertRaises(一)可以測試所有EXCE你從代碼中提出的。
的語法使用assertRaises是:
assertRaises(CustomException, Function that throws the exception, Parameters for function(In case of multiple params, they will be comma separated.))
它是如何工作的:
當遇到assertRaises,PyUnit中執行裏面提到的功能,嘗試,除非包含CustomException的except塊的塊。如果正確處理異常,測試通過,否則失敗。
有關assertRaises的更多信息,請訪問How to properly use unit-testing's assertRaises() with NoneType objects?。
0
如果引發異常的模塊和您的測試代碼引用了不同名稱空間中的異常,則會發生這種情況。
因此,舉例來說,如果您有:
# code_to_be_tested.py
from module_with_exception import * # including CustomException
...
raise CustomException()
# test_code.py
import module_with_exception.CustomException as CE
...
with assertRaises(CE) ...
這是因爲這兩個文件實際上最終指向不同的類/對象。
所以,解決這個方法有兩種:
- 指他們以同樣的方式,如果可能的話
- ,如果你不喜歡的東西
from blah import *
,抓住從測試模塊異常本身,因爲這是它的提高(即from code_to_be_tested import CustomException
)
相關問題
- 1. 使用pyunit測試Python中的異常
- 2. 在app.config中使用自定義節在WPF中引發異常
- 3. Python:如果聲明異常使用os.path.isdir?
- 4. 聲明的列表引發NoneType異常
- 5. 說明如何在Java中引發和捕獲自定義異常
- 6. 在xaml中使用自定義RoutedUICommand會引發異常
- 7. 如何在SQL Server中引發自定義異常
- 8. 在* .h中聲明的未定義引用已在另一個* .h中聲明
- 9. 如何轉發聲明自定義unique_ptr
- 10. 僅引發特定異常的自定義異常
- 11. 如何在正常控制流中引發Rails 3+中的自定義異常?
- 12. 如何轉發聲明一個自定義構造函數?
- 13. 定義自定義異常在Python
- 14. 如何從包__init__中引發自定義異常?
- 15. 如何在OWL2中聲明一個自定義類關係
- 16. 如何聲明C#異步方法在單元測試中引發異常?
- 17. 可以在Python中聲明一個抽象異常嗎?
- 18. 在Java中聲明異常,如何?
- 19. 我的自定義RoleProvider應該在AddUsersToRoles中引發異常嗎?
- 20. 在引發的異常中執行自定義代碼
- 21. 如何在C++中聲明一個自引用容器?
- 22. 使用未定義的常量聲明的 - 假設「聲明」
- 23. 使用自定義異常
- 24. 如何定義在Apache Came中通過ref引發的異常
- 25. 測試自定義異常引發時出錯(使用assertRaises())
- 26. Python中的自定義異常
- 27. Python中的自定義異常處理
- 28. 引發另一個異常的異常
- 29. 在JUnit中聲明異常
- 30. 在C中聲明異常#