Während die akzeptierte Antwort korrekt ist, denke ich, es gibt eine bessere Verwendung assert_raises
Methode. Wenn Sie einfach bestätigen möchten, dass eine Ausnahme auftritt, ist es wahrscheinlich einfacher und sauberer, @raises
Syntax zu verwenden.
@raises(HTTPError)
def test_exception_is_raised:
call_your_method(p1, p2)
jedoch annehmen, dass Sie etwas mehr mit der erhöhten Ausnahme machen wollen, zum Beispiel: Wir brauchen, dass httperror vom Typ 401 angehoben zu behaupten: Unerlaubten, statt 500: Server-Fehler.
In solch einer Situation oben ist Syntax nicht so hilfreich, wir sollten die assert_raises
aber auf eine andere Weise verwenden. Wenn wir es nicht übergeben callable
als zweiter Parameter assert_raises
wird zurück einen Kontext, den wir verwenden können, um die Ausnahme Details weiter zu testen.
def test_exception_is_raised:
with assert_raises(HTTPError) as cm:
call_your_method(p1, p2)
ex = cm.exception # raised exception is available through exception property of context
ok_(ex.code == 401, 'HTTPError should be Unauthorized!')
Okay, danke! Aber wissen Sie auch eine Link für eine gute Nase Dokumentation, wo ich andere Nose Funktionen Prüfung kann wie assert_equal, assert_raises! @kindall – user1544624
Ich hatte Probleme, dass zu finden, auch. Sie können jedoch 'help (assert_rases)' versuchen. – kindall
Ein bisschen versteckt, aber http://nose.readthedocs.org/en/latest/testing_tools.html#module-nose.tools ersten Absatz heißt: "... und alle die gleichen assertX Methoden gefunden in unittest.TestCase (nur in PEP 8 Mode geschrieben, also assert_equal statt assertEqual). ". Hier ist diese Liste: http://docs.python.org/2/library/unittest.html#assert-methods –