2016-09-23 2 views
0
angehoben wird

ich habe die folgende Funktion:self.assertRaise fangen nicht Typeerror obwohl es

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

und den folgenden Testfall dafür:

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

ich die folgende Fehlermeldung erhalten: Fehler Traceback (jüngste Aufforderung zuletzt):

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 

ich kann Stellen Sie klar, dass TypeError ausgelöst wird. Warum schlägt mein Unittest fehl?

Antwort

0

Sie übergeben den Rückgabewert eines Aufrufs an is_complete als zweites Argument an self.assertRaises. Stattdessen müssen Sie die Funktion is_complete selbst als zweites Argument übergeben, mit den Argumenten für is_complete als zusätzliche Argumente zu assertRaises. (Mit anderen Worten, übergeben Sie die Stücke zu assertRaises, und lassen Sie es den eigentlichen Anruf.)

self.assertRaises(TypeError, is_complete, g1) 

Alternativ Sie assertRaises als Kontext-Manager verwenden können, und rufen Sie Ihre Funktion im Körper eines with Erklärung.

with self.assertRaises(TypeError): 
    is_complete(g1) 
Verwandte Themen