¿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:
yieldes una forma más legible y moderna de organizar la configuración/desmontaje en fixtures.addfinalizerpermite 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.