Sobes.tech
Junior — Middle

Comment assurer l'appel de la fixture après la fin de l'exécution du test ou du script?

sobes.tech IA

Réponse de l'IA

Pour assurer l'appel de la fonction de nettoyage après la fin du test ou du script, on utilise généralement des mécanismes de teardown ou de finalisation, qui garantissent l'exécution du code de nettoyage indépendamment du résultat du test.

Dans les frameworks de test populaires, cela se réalise via des méthodes spéciales ou des décorateurs :

  • Dans pytest, on peut utiliser une fixture avec le paramètre yield :
import pytest

@pytest.fixture
def resource():
    # configuration
    res = acquire_resource()
    yield res
    # nettoyage
    release_resource(res)
  • Dans unittest (Python), la méthode tearDown() est appelée après chaque test :
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))
  • En Java avec JUnit, l'annotation @After ou @AfterEach :
@After
public void tearDown() {
    releaseResource();
}

Ainsi, la fonction ou la ressource de nettoyage est libérée dans un bloc qui s'exécute de manière garantie après le test, même si le test échoue avec une erreur.