Junior — Middle
Jak zajistit volání fixture po dokončení testu nebo skriptu?
sobes.tech AI
Odpověď od AI
Pro zajištění volání funkce čištění po ukončení testu nebo skriptu se obvykle používají mechanismy teardown nebo finalizátory, které zaručují provedení kódu čištění bez ohledu na výsledek testu.
V populárních testovacích rámcích je to realizováno pomocí speciálních metod nebo dekorátorů:
- V pytest lze použít fixture s parametrem
yield:
import pytest
@pytest.fixture
def resource():
# setup
res = acquire_resource()
yield res
# teardown
release_resource(res)
- V unittest (Python) je metoda
tearDown()volána po každém testu:
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))
- V Java s JUnit jsou použity anotace
@Afternebo@AfterEach:
@After
public void tearDown() {
releaseResource();
}
Tímto způsobem je blok čištění nebo uvolnění zdroje proveden v bloku, který je garantovaně spuštěn po testu, i když test selže s chybou.