Sobes.tech
Junior — Middle

Kā nodrošināt, lai fikstūra tiktu izsaukta pēc testa vai skripta pabeigšanas?

sobes.tech AI

Atbilde no AI

Lai nodrošinātu, ka funkcija tīrīšanai tiek izsaukta pēc testa vai skripta beigām, parasti izmanto teardown vai finalizatoru mehānismus, kas garantē tīrīšanas koda izpildi neatkarīgi no testa rezultāta.

Populāros testēšanas ietvaros tas tiek īstenots ar speciālām metodēm vai dekoratoriem:

  • pytest var izmantot fixture ar parametru yield:
import pytest

@pytest.fixture
def resource():
    # iestatīšana
    res = acquire_resource()
    yield res
    # tīrīšana
    release_resource(res)
  • unittest (Python) gadījumā tearDown() metode tiek izsaukta pēc katra testa:
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))
  • Java ar JUnit izmanto anotācijas @After vai @AfterEach:
@After
public void tearDown() {
    releaseResource();
}

Šādā veidā tīrīšanas vai resursu atbrīvošanas bloks tiek garantēti izpildīts pēc testa, pat ja tests beidzas ar kļūdu.