2017-08-10 97 views
-2

我已經做了一個類(從Exception派生):查找類型的異常

class InvalidFilterException(Exception): 
     #some code here 
     super().__init__(message) 

現在,當我運行此模塊測試,使用unittest.Testcase,運行

assertRaises(Exception, InvalidFilterException, arg1, arg2)

給出的錯誤:

AssertionError: Exception not raised by InvalidFilterException

有人能告訴我,我應該用Exception作爲assertRaises中的第一個參數,以便測試通過嗎? 我也嘗試使用InvalidFilterException作爲參數,但也失敗了,輸出相同。

+0

你的測試沒有意義。異常不會引發另一個異常。您應該測試您的實際代碼是否引發InvalidFilterException。 –

+0

是不是因爲你不'raise'異常,只有'__init__'呢? – Stael

+0

@不改變第一個參數會使測試通過。你想要確定什麼? – Goyo

回答

0

在你的情況下,你正在嘗試InvalidFilterException,因爲assertRaises的第二個參數是可調用的,你想測試。

您需要使用您的異常像...

assertRaises(InvalidFilterException, do_something, arg1, arg2) 

with assertRaises(InvalidFilterException): 
    do_something(arg1, arg2) 

do_something是需要測試你的函數或可調用。

+0

'do_something()'函數到底會做什麼?據我所知,如果'do_something(arg1,arg2)'運行時引發'InvalidFilterException',測試會通過。 –

+0

是的..所以你想測試的功能或代碼塊將do_something – viveksyngh

+0

你可以參考這個鏈接的更多信息... https://stackoverflow.com/questions/129507/how-do-you-測試該-A-蟒功能拋出-AN-異常?RQ = 1 – viveksyngh