Junior — Middle
Como pode garantir-se a chamada da fixture após a conclusão do teste ou script?
sobes.tech IA
Resposta da IA
Para garantir a chamada da função de limpeza após o término do teste ou script, geralmente utilizam-se mecanismos de teardown ou finalizadores, que asseguram a execução do código de limpeza independentemente do resultado do teste.
Nos frameworks de teste populares, isso é implementado através de métodos especiais ou decoradores:
- No pytest, pode-se usar uma fixture com o parâmetro
yield:
import pytest
@pytest.fixture
def resource():
# configuração
res = acquire_resource()
yield res
# limpeza
release_resource(res)
- No unittest (Python), o método
tearDown()é chamado após cada teste:
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))
- Em Java com JUnit, a anotação
@Afterou@AfterEach:
@After
public void tearDown() {
releaseResource();
}
Dessa forma, a função ou recurso de limpeza é liberado em um bloco que é garantidamente executado após o teste, mesmo que o teste falhe com um erro.