Die Python 2.7 unittest docs sagen:Verwenden Sie eine benutzerdefinierte Fehlermeldung für `assertRaises()` in Python?
Alle assert Methoden (außer
assertRaises()
,assertRaisesRegexp()
) akzeptieren einmsg
Argument, dass, falls angegeben, da die Fehlermeldung bei einem Fehler verwendet
... aber was ist, wenn ich Möchten Sie die Fehlermeldung für assertRaises()
oder assertRaisesRegexp()
angeben?
Anwendungsfall: wenn verschiedene Werte in einer Schleife zu testen, wenn man versagt würde Ich mag wissen, was man:
NON_INTEGERS = [0.21, 1.5, 23.462, math.pi]
class FactorizerTestCase(unittest.TestCase):
def test_exception_raised_for_non_integers(self):
for value in NON_INTEGERS:
with self.assertRaises(ValueError):
factorize(value)
Wenn eine dieser ausfällt, erhalte ich:
AssertionError: ValueError not raised
das ist nicht sehr hilfreich für mich, um herauszufinden, welche fehlgeschlagen ... wenn ich nur ein msg=
Argument wie ich mit assertEqual()
usw. liefern könnte!
(Ich könnte natürlich diese brechen in separaten Testfunktionen - aber vielleicht gibt es viele Werte, die ich testen wollen, oder es erfordert einige langsame/teure Einrichtung, oder es ist Teil einer längeren Funktionstest)
würde ich es lieben, wenn ich könnte leicht es so etwas wie Bericht:
AssertionError: ValueError not raised for input 23.462
- aber es ist auch nicht kritisch genug, was zu rechtfertigen Neuimplementierung/Verlängerung assertRaises()
und das Hinzufügen einer Last mehr Code meine Tests. (! Aber Hacky)