Sobes.tech
Junior — Middle

Cum se poate asigura apelarea fixture-ului după finalizarea testului sau scriptului?

sobes.tech AI

Răspuns de la AI

Pentru a asigura apelarea funcției de curățare după terminarea testului sau scriptului, se folosesc de obicei mecanisme de teardown sau finalizatori, care garantează executarea codului de curățare indiferent de rezultatul testului.

În framework-urile de testare populare, acest lucru se realizează prin metode speciale sau decoratori:

  • În pytest se poate folosi o fixture cu parametrul yield:
import pytest

@pytest.fixture
def resource():
    # setup
    res = acquire_resource()
    yield res
    # teardown
    release_resource(res)
  • În unittest (Python), metoda tearDown() este apelată după fiecare 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))
  • În Java cu JUnit, se folosesc adnotările @After sau @AfterEach:
@After
public void tearDown() {
    releaseResource();
}

Astfel, funcția sau resursa de curățare este eliberată într-un bloc care se execută garantat după test, chiar dacă testul a eșuat cu o eroare.