Verwenden Sie beim Schreiben von Tests mit Python unittest 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. 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.

Über die Testvorrichtung

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.

  1. setUp
  2. test_it
  3. tearDown

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.

  1. setUp
  2. test_it
  3. tearDown

Wenn setUp eine Ausnahme auslöst

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

  1. setUp

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

  1. setUp
  2. doCleanups

Wird sein.

Recommended Posts

Verwenden Sie beim Schreiben von Tests mit Python unittest doCleanups für SetUps, die fehlschlagen können
Verzeichnisstruktur beim Schreiben von Tests mit Python 3-Standard unittest
Verwenden Sie ein Makro, das beim Speichern von Python mit vscode ausgeführt wird
Verwenden Sie DeepL mit Python (für die Artikelübersetzung)
Bis Sie opencv mit Python verwenden können
Verwenden Sie vorerst Logger mit Python
Wickeln Sie C mit Cython für Python ein
Wrap C ++ mit Cython zur Verwendung von Python
[Python] Ich möchte nur den Index verwenden, wenn ich eine Liste mit einer for-Anweisung schleife
Web Scraping für Anfänger in Python (1) Verbesserte Version
String-Manipulation mit Python & Pandas, die ich oft benutze
Beachten Sie, dass das Schreiben mit Ruby so ist wie das Schreiben mit Python
Verwenden Sie Python, das von pyenv für die PL / Python-Ausführungsumgebung installiert wurde
Verwenden Sie Cursur, das in Python automatisch mit sqlite3 geschlossen wird
Hinweise zu Python-Kenntnissen, die mit AtCoder verwendet werden können
[Python] Verwenden Sie JSON mit Python
Verwenden Sie Mecab mit Python 3
Verwenden Sie DynamoDB mit Python
Verwenden Sie Python 3.8 mit Anaconda
Verwenden Sie Python mit Docker
Warum kann ich das Modul durch Importieren mit Python verwenden?
[Python] Hinweise beim Versuch, Numpy mit Cython zu verwenden
Skripte, die bei der Verwendung von Bottle in Python verwendet werden können
Mir wurde gesagt, dass ich XML_SetHashSalt nicht finden konnte, als ich versuchte, pip mit Python zu verwenden.
Verstehen Sie die Wahrscheinlichkeiten und Statistiken, die für das Fortschrittsmanagement mit einem Python-Programm verwendet werden können