Sobes.tech
Junior — Middle

Hoe kunt u ervoor zorgen dat de fixture wordt opgeroepen na het voltooien van de test of script?

sobes.tech AI

Antwoord van AI

Om het aanroepen van de opruimfunctie na het einde van de test of script te garanderen, worden meestal mechanismen zoals teardown of finalisatoren gebruikt, die de uitvoering van de opruimcode garanderen ongeacht het resultaat van de test.

In populaire testframeworks wordt dit gerealiseerd via speciale methoden of decorateurs:

  • In pytest kan een fixture met de parameter yield worden gebruikt:
import pytest

@pytest.fixture
def resource():
    # setup
    res = acquire_resource()
    yield res
    # teardown
    release_resource(res)
  • In unittest (Python) wordt de methode tearDown() na elke test aangeroepen:
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 met JUnit worden de annotaties @After of @AfterEach gebruikt:
@After
public void tearDown() {
    releaseResource();
}

Op deze manier wordt de opruim- of vrijgavefunctie in een blok uitgevoerd dat gegarandeerd na de test wordt uitgevoerd, zelfs als de test met een fout eindigt.