Wenn Sie einen Test mit dem unittest-Modul schreiben, können Sie ein Gerät schreiben, um sich auf den Test vorzubereiten. TearDown empfängt und behandelt zwar Ausnahmen in der Testfunktion. Ausnahmen während setUp werden umgangen. Verwenden Sie doCleanups für SetUps, die fehlschlagen können.
Wenn Sie einen Test mit dem unittest-Modul schreiben, können Sie ein Gerät schreiben, um sich auf den Test vorzubereiten. Zum Beispiel entspricht setUp / tearDown dem.
Schreiben Sie wie folgt.
class Tests(unittest.TestCase):
def setUp(self):
print("setUp")
def tearDown(self):
print("tearDown")
def test_it(self):
print("before execute")
_callFUT()
print("after execute")
Zu diesem Zeitpunkt wird es in der folgenden Reihenfolge ausgeführt.
tearDown wird auch aufgerufen, wenn in der Testfunktion in 2 eine Ausnahme auftritt.
class Tests2(unittest.TestCase):
def setUp(self):
print("setUp")
def tearDown(self):
print("tearDown")
def doCleanups(self):
print("cleanup")
def test_it(self):
print("before execute")
raise Exception
print("after execute")
Die Ausführungsreihenfolge ist dieselbe.
Natürlich ist der in setUp of test geschriebene Code auch Python-Code, daher gibt es einige, die Ausnahmen auslösen können. In einem solchen Fall ist es gefährlich zu glauben, dass tearDown die Bereinigung nach der Ausführung garantiert. TearDown kennt die Ausnahmen in setUp nicht.
class Tests3(unittest.TestCase):
def setUp(self):
print("setUp")
raise Exception("setup")
def tearDown(self):
print("tearDown")
def test_it(self):
print("before execute")
raise Exception("execute")
print("after execute")
Es werden nur die folgenden aufgerufen
tearDown wird nicht aufgerufen. Verwenden Sie zu diesem Zeitpunkt doCleanups, wenn Sie eine Nachbearbeitung hinzufügen möchten. doCleanups wird unabhängig von Ausnahmen bei setUp und tearDown unbedingt aufgerufen.
class Tests4(unittest.TestCase):
def setUp(self):
print("setUp")
raise Exception("setup")
def tearDown(self):
print("tearDown")
def doCleanups(self):
print("cleanup")
def test_it(self):
print("before execute")
print("after execute")
Die Ausführungsreihenfolge ist in diesem Fall
Wird sein.
Recommended Posts