Sobes.tech
Junior — Middle

Wie kann man sicherstellen, dass die Fixture nach Abschluss des Tests oder Skripts aufgerufen wird?

sobes.tech KI

Antwort von AI

Um eine Aufruf der Aufräumfunktion nach Abschluss des Tests oder Skripts sicherzustellen, werden in der Regel Mechanismen wie teardown oder Finalisatoren verwendet, die die Ausführung des Reinigungscodes unabhängig vom Testergebnis garantieren.

In beliebten Testframeworks wird dies durch spezielle Methoden oder Dekoratoren realisiert:

  • In pytest kann man eine Fixture mit dem Parameter yield verwenden:
import pytest

@pytest.fixture
def resource():
    # Setup
    res = acquire_resource()
    yield res
    # Teardown
    release_resource(res)
  • In unittest (Python) wird die Methode tearDown() nach jedem Test aufgerufen:
import unittest

class MyTest(unittest.TestCase):
    def setUp(self):
        self.res = acquire_resource()

    def tearDown(self):
        release_resource(self.res)

    def test_something(self):
        self.assertTrue(use_resource(self.res))
  • In Java mit JUnit gibt es die Annotation @After oder @AfterEach:
@After
public void tearDown() {
    releaseResource();
}

Auf diese Weise wird die Bereinigung oder Freigabe der Ressource in einem Block durchgeführt, der garantiert nach dem Test ausgeführt wird, selbst wenn der Test mit einem Fehler endet.