2016-09-23 31 views
0

我有以下功能:self.assertRaise不要再追類型錯誤,即使它被提出

def is_complete(grph): 
    if not isinstance(grph,graph): 
     raise TypeError 
      ... 

和下面的測試案例吧:

def test_is_complete_q4(self): 
     g1 = [1] 
     self.assertRaises(TypeError, is_complete(g1)) 

我得到以下錯誤: 錯誤 追溯(最近呼叫最後):

File "/Users/.../test_graph_functions.py", line 34, in test_is_complete_q4 
    self.assertRaises(TypeError, is_complete(g1)) 
    File "/Users/.../graph_functions.py", line 6, in is_complete 
    raise TypeError 
TypeError 

我可以清楚地看到TypeError被提出,爲什麼我的單元測試失敗?

回答

0

您將呼叫的返回值作爲self.assertRaises的第二個參數傳遞給is_complete。相反,您需要將函數is_complete本身作爲第二個參數,將is_complete的參數作爲assertRaises的附加參數。 (換句話說,通過件assertRaises,讓進行實際的通話)。

self.assertRaises(TypeError, is_complete, g1) 

或者,你可以使用assertRaises作爲一個上下文管理器,並調用你的函數在with的身體聲明。

with self.assertRaises(TypeError): 
    is_complete(g1) 
相關問題