Sobes.tech
Junior — Middle

Kako osigurati pozivanje fixture-a nakon završetka testa ili skripte?

sobes.tech АИ

Одговор од АИ

Da biste osigurali pozivanje funkcije za čišćenje nakon završetka testa ili skripte, obično se koriste mehanizmi teardown ili finalizatori, koji garantuju izvršenje koda za čišćenje bez obzira na rezultat testa.

U popularnim test okvirima, to se realizuje putem posebnih metoda ili dekoratora:

  • U pytest-u možete koristiti fixture sa parametrima yield:
import pytest

@pytest.fixture
def resource():
    # podešavanje
    res = acquire_resource()
    yield res
    # čišćenje
    release_resource(res)
  • U unittest (Python), metoda tearDown() se poziva nakon svakog 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))
  • U Javi sa JUnit-om, koriste se anotacije @After ili @AfterEach:
@After
public void tearDown() {
    releaseResource();
}

Na ovaj način, blok za čišćenje ili oslobađanje resursa se garantovano izvršava nakon testa, čak i ako test zakaže sa greškom.