Sobes.tech
Junior — Middle

Hogyan biztosítható, hogy a fixture hívása megtörténjen a teszt vagy szkript befejezése után?

sobes.tech MI

Válasz az MI-től

A teszt vagy szkript befejezése után a takarítási függvény hívásának biztosítására általában teardown vagy finalizátor mechanizmusokat használnak, amelyek garantálják a tisztítási kód végrehajtását a teszt eredményétől függetlenül.

Népszerű teszt keretrendszerekben ezt speciális módszerek vagy dekorátorok segítségével valósítják meg:

  • A pytest-ben egy fixture-t a yield paraméterrel lehet használni:
import pytest

@pytest.fixture
def resource():
    # setup
    res = acquire_resource()
    yield res
    # teardown
    release_resource(res)
  • A unittest (Python) esetén a tearDown() metódus minden teszt után meghívódik:
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-ban a JUnit esetén az @After vagy @AfterEach annotációkat használják:
@After
public void tearDown() {
    releaseResource();
}

Így a takarítási vagy erőforrás felszabadítási blokk garantáltan végrehajtódik a teszt után, még akkor is, ha a teszt hibával ér véget.