2016-07-28 5 views
1

Ich erstelle Tests für ein Python-Projekt. Die normalen Tests funktionieren gut, aber ich möchte testen, ob meine Funktion in einer bestimmten Bedingung eine selbst definierte Ausnahme auslöst. Daher möchte ich assertRaises (Exception, Function) verwenden. Irgendwelche Ideen?Fehler beim Testen der Erhöhung von selbst definierten Ausnahmen (mithilfe von assertRaises())

Die Funktion, die die Ausnahme aufwirft, ist:

def connect(comp1, comp2): 
    if comp1 == comp2: 
     raise e.InvalidConnectionError(comp1, comp2) 
    ... 

Die Ausnahme ist:

class InvalidConnectionError(Exception): 
    def __init__(self, connection1, connection2): 
     self._connection1 = connection1 
     self._connection2 = connection2 

    def __str__(self): 
     string = '...' 
     return string 

Die Testmethode ist die folgende:

class TestConnections(u.TestCase): 
    def test_connect_error(self): 
     comp = c.PowerConsumer('Bus', True, 1000) 
     self.assertRaises(e.InvalidConnectionError, c.connect(comp, comp)) 

Jedoch habe ich die folgende Fehlermeldung erhalten :

Error 
Traceback (most recent call last): 
File "C:\Users\t5ycxK\PycharmProjects\ElectricPowerDesign\test_component.py", line 190, in test_connect_error 
self.assertRaises(e.InvalidConnectionError, c.connect(comp, comp)) 
File "C:\Users\t5ycxK\PycharmProjects\ElectricPowerDesign\component.py", line 428, in connect 
raise e.InvalidConnectionError(comp1, comp2) 
InvalidConnectionError: <unprintable InvalidConnectionError object> 
+1

Die '__init__' Methode' InvalidConnectionError' als '__int__' falsch geschrieben. – DeepSpace

+0

Vielen Dank, dass Sie darauf hingewiesen haben. Allerdings war es nur falsch im Code hier, nicht in meinen eigentlichen Dateien. Ich werde meine Frage bearbeiten. –

Antwort

5

assertRaises erwartet eigentlich perform the call. Sie führen es jedoch bereits selbst aus, wodurch der Fehler assertRaises tatsächlich tatsächlich ausgeführt wird.

self.assertRaises(e.InvalidConnectionError, c.connect(comp, comp)) 
# run this^with first static argument^and second argument^from `c.connect(comp, comp)` 

Verwendung entweder von denen statt:

self.assertRaises(e.InvalidConnectionError, c.connect, comp, comp) 

with self.assertRaises(e.InvalidConnectionError): 
    c.connect(comp, comp) 
+0

Danke, das hat das Problem gelöst. Ich habe deine Antwort akzeptiert! –

Verwandte Themen