Sobes.tech
Senior

¿Cómo agregar la limpieza de la lista después de completar la prueba? ¿Cuál es la diferencia entre yield y AdFinalizer?

sobes.tech AI

Respuesta de la IA

En las pruebas en Python usando pytest para limpiar recursos después de la prueba, a menudo se utiliza la construcción con yield en los fixtures. El código antes de yield se ejecuta antes de la prueba, y después de yield — después de la prueba, lo cual es conveniente para limpiar, por ejemplo, una lista.

Ejemplo de fixture con limpieza de lista:

import pytest

@pytest.fixture
def my_list():
    lst = [1, 2, 3]
    yield lst
    lst.clear()  # Limpieza después de la prueba

AdFinalizer es un método en pytest que permite agregar una función de limpieza que será llamada después de la prueba. Se puede usar dentro de un fixture mediante request.addfinalizer(cleanup_func).

Diferencias entre yield y addfinalizer:

  • yield es una forma más legible y moderna de organizar la configuración/desmontaje en fixtures.
  • addfinalizer permite agregar varias funciones de limpieza de manera dinámica.

Ejemplo con addfinalizer:

import pytest

def cleanup():
    print("Limpieza después de la prueba")

@pytest.fixture
def my_resource(request):
    # configuración
    request.addfinalizer(cleanup)
    return some_resource

En general, yield es preferible para casos simples, y addfinalizer para escenarios más complejos con múltiples finalizadores.