Junior — Middle
Kaip užtikrinti, kad fixture būtų iškviesta po testo ar skripto pabaigos?
sobes.tech AI
Atsakymas iš AI
Siekiant užtikrinti, kad po testo ar skripto pabaigos būtų iškviesta valymo funkcija, paprastai naudojami teardown arba finalizatoriaus mechanizmai, kurie garantuoja valymo kodo vykdymą nepriklausomai nuo testo rezultato.
Populiariuose testų karkasuose tai įgyvendinama per specialius metodus arba dekoratorius:
- pytest galima naudoti fixture su parametru
yield:
import pytest
@pytest.fixture
def resource():
# nustatymas
res = acquire_resource()
yield res
# valymas
release_resource(res)
- unittest (Python) atveju,
tearDown()metodas kviečiamas po kiekvieno testo:
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 su JUnit, naudojamos anotacijos
@Afterarba@AfterEach:
@After
public void tearDown() {
releaseResource();
}
Šiuo būdu, valymo arba išlaisvinimo blokas garantuotai vykdomas po testo, net jei testas nepavyko su klaida.