Python unittest: Reporting Ausnahme als Misserfolg

Ich möchte auf eine Ausnahme in Python unittest, mit den folgenden Anforderungen zu überprüfen:

  • Muss als Fehler gemeldet werden, kein Fehler
  • Die ursprüngliche Ausnahme darf nicht verschlingen

Ich habe viele Lösungen des Formulars gesehen:

try: something() except: self.fail("It failed") 

Leider verschlingen diese Lösungen die ursprüngliche Ausnahme. Jede Möglichkeit, die ursprüngliche Ausnahme zu behalten?

Ich landete mit einer Variante von Pierre GM's Antwort:

 try: something() except: self.fail("Failed with %s" % traceback.format_exc()) 

2 Solutions collect form web for “Python unittest: Reporting Ausnahme als Misserfolg”

Wie vorgeschlagen, könnten Sie den Kontext einer generischen Ausnahme verwenden:

 except Exception, error: self.fail("Failed with %s" % error) 

Sie können die Informationen auch bezüglich der Ausnahme über sys.exc_info()

 try: 1./0 except: (etype, evalue, etrace) = sys.exc_info() self.fail("Failed with %s" % evalue) 

Das Tupel (etype, evalue, etrace) ist hier (<type 'exceptions.ZeroDivisionError'>, ZeroDivisionError('float division',), <traceback object at 0x7f6f2c02fa70>)

Sie können die Ausnahme in einer Variable mit etwas wie erfassen

  except Exception, e: // fail with str(e) 
  • Warum behaupten Behauptungen in unbestimmter Verwendung TestCase.assertEqual nicht das Bestätigungsschlüsselwort?
  • Spezifizieren Sie spezifische Testcases in python unit test TestLoader
  • Gute Praxis zur Wiederverwendung von Unit-Test auf verschiedene Funktionen in Python
  • Unittest verursacht sys.exit ()
  • Python unittest - Gegenteil von assertRaises?
  • Stderr-Ausgabe in Unit-Tests ausblenden
  • Wie man richtig behauptet, dass eine Ausnahme in pytest erhoben wird?
  • Wie man anmutig stoppen python unittest?
  • Unbekannter Test ohne Dekorator-Syntax überspringen
  • Caching Ergebnis von setUp () mit Python unittest
  • Übergeben Sie einen Python-Unit-Test, wenn eine Ausnahme nicht erhöht wird
  • Python ist die beste Programmiersprache der Welt.