Senior
Como adicionar a limpeza da lista após a conclusão do teste? Qual é a diferença entre yield e AdFinalizer?
sobes.tech IA
Resposta da IA
Nos testes em Python usando pytest para limpar recursos após o teste, muitas vezes utiliza-se a construção com yield nos fixtures. O código antes de yield é executado antes do teste, e após yield — após o teste, o que é conveniente para limpar, por exemplo, uma lista.
Exemplo de fixture com limpeza de lista:
import pytest
@pytest.fixture
def my_list():
lst = [1, 2, 3]
yield lst
lst.clear() # Limpeza após o teste
AdFinalizer é um método no pytest que permite adicionar uma função de limpeza que será chamada após o teste. Pode ser usado dentro de um fixture através de request.addfinalizer(cleanup_func).
Diferenças entre yield e addfinalizer:
yieldé uma forma mais legível e moderna de organizar setup/teardown em fixtures.addfinalizerpermite adicionar várias funções de limpeza dinamicamente.
Exemplo com addfinalizer:
import pytest
def cleanup():
print("Limpeza após o teste")
@pytest.fixture
def my_resource(request):
# setup
request.addfinalizer(cleanup)
return some_resource
De modo geral, yield é preferido para casos simples, addfinalizer para cenários mais complexos com múltiplos finalizadores.