Sobes.tech
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 @After ou @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.