Sobes.tech
Junior — Middle

¿Cómo se puede garantizar la llamada a la fixture después de que finalice la ejecución de la prueba o script?

sobes.tech AI

Respuesta de la IA

Para garantizar la llamada a la función de limpieza después de que finalice la prueba o el script, generalmente se utilizan mecanismos de teardown o finalizadores, que aseguran la ejecución del código de limpieza independientemente del resultado de la prueba.

En los marcos de prueba populares, esto se implementa mediante métodos especiales o decoradores:

  • En pytest se puede usar una fixture con el parámetro yield:
import pytest

@pytest.fixture
def resource():
    # configuración
    res = acquire_resource()
    yield res
    # limpieza
    release_resource(res)
  • En unittest (Python), el método tearDown() se llama después de cada prueba:
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))
  • En Java con JUnit, la anotación @After o @AfterEach:
@After
public void tearDown() {
    releaseResource();
}

De esta manera, la función de limpieza o recurso se libera en un bloque que se ejecuta garantizadamente después de la prueba, incluso si la prueba falla con un error.