2016-03-21 4 views
-1

Gibt es trotzdem mit Unittest nur behaupten, dass ein Funktionsaufruf nicht zu einem Fehler führt, ob es sich um eine Typeerror ist, IOError usw.Wie man behauptet, dass ein Funktionsaufruf keinen Fehler mit unittest zurückgibt?

Beispiel:

assert function(a,b) is not error 

oder

if not assertRaises function(a, b) 

Was ist der beste Weg, dies zu tun (ohne Klassen zu verwenden)? Das Problem, das ich habe, ist all die nützliche Dokumentation, die ich bekomme. Ein Kreuz im Unitest ist alles klassenbasiert und ich möchte nicht klassenbasiert verwenden.

Voll Beispiel:

def test_validate_params(): 
    assert test.validate_params('hackenv-re', 'test.username') is not errors 
    assert test.validate_params('fakeenv', 'test.username') is error 
    assert test.validate_params('hackevn-re', 'vagrant') is error 
    counter += 1 
    print "Test Passed {0}/5: validate_params".format(counter) 
+0

Haben Sie eine Probe des Codes haben Sie testen möchten. Abhängig davon, wie Ihre Methode aussieht, gibt es verschiedene Möglichkeiten, dies zu tun. – idjaw

+0

Ich habe alles an Ort und Stelle, ich versuche nur die Zeilen anzupassen, die ich in dem Beispiel eingefügt habe. Es ist nur ein Funktionsaufruftest (a, b) – david

+0

Es ist schwer, den besten Ansatz zu bestimmen, ohne zumindest einen Blick darauf zu werfen, wie Sie testen. Zum Beispiel hier. Wenn ich testen will, dass es nicht erhöht wurde, werde ich sicherstellen, dass der Code "Zeug" zurückgibt. So weiß ich, dass es nicht behauptet hat. – idjaw

Antwort

1

Wenn Ihre Funktion eine Ausnahme auslöst, wird der Test nicht bestehen. Zusätzliche Prüfungen sind nicht erforderlich. Wenn Sie unbedingt wollen, können Sie etwas tun:

try: 
    function_under_test() 
except Exception as e: 
    self.fail("Unexpected exception %s" % e) 

(unter der Annahme, Standard-Python-Unittest)

Verwandte Themen