Sobes.tech
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 @After nebo @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.