Sobes.tech
Junior — Middle

Ako zabezpečiť volanie fixture po ukončení testu alebo skriptu?

sobes.tech AI

Odpoveď od AI

Aby ste zabezpečili volanie funkcie na upratovanie po ukončení testu alebo skriptu, zvyčajne sa používajú mechanizmy teardown alebo finalizátory, ktoré garantujú vykonanie kódu na upratovanie bez ohľadu na výsledok testu.

V populárnych testovacích rámcoch sa to realizuje prostredníctvom špeciálnych metód alebo dekorátorov:

  • V pytest môžete použiť fixture s parametrom yield:
import pytest

@pytest.fixture
def resource():
    # nastavenie
    res = acquire_resource()
    yield res
    # upratovanie
    release_resource(res)
  • V unittest (Python) sa po každom teste volá metóda tearDown():
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 Jave s JUnit sa používajú anotácie @After alebo @AfterEach:
@After
public void tearDown() {
    releaseResource();
}

Týmto spôsobom sa blok na upratovanie alebo uvoľnenie zdroja vykoná garantovane po teste, aj keď test zlyhá s chybou.