Junior — Middle
Come garantire la chiamata della fixture dopo la fine dell'esecuzione del test o dello script?
sobes.tech AI
Risposta dell'AI
Per garantire la chiamata alla funzione di pulizia dopo la fine del test o dello script, si utilizzano generalmente meccanismi di teardown o finalizzatori, che garantiscono l'esecuzione del codice di pulizia indipendentemente dal risultato del test.
Nei framework di test popolari, ciò si realizza tramite metodi speciali o decoratori:
- In pytest si può usare una fixture con il parametro
yield:
import pytest
@pytest.fixture
def resource():
# setup
res = acquire_resource()
yield res
# teardown
release_resource(res)
- In unittest (Python), il metodo
tearDown()viene chiamato dopo ogni 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))
- In Java con JUnit, si usano le annotazioni
@Aftero@AfterEach:
@After
public void tearDown() {
releaseResource();
}
In questo modo, la funzione o risorsa di pulizia viene liberata in un blocco che viene eseguito garantitamente dopo il test, anche se il test fallisce con un errore.