Comment ajouter le nettoyage de la liste après avoir terminé le test ? Quelle est la différence entre yield et AdFinalizer ?
sobes.tech IA
Réponse de l'IA
Dans les tests en Python utilisant pytest pour nettoyer les ressources après le test, on utilise souvent la construction avec yield dans les fixtures. Le code avant yield s'exécute avant le test, et après yield — après le test, ce qui est pratique pour le nettoyage, par exemple, d'une liste.
Exemple de fixture avec nettoyage de liste :
import pytest
@pytest.fixture
def ma_liste():
lst = [1, 2, 3]
yield lst
lst.clear() # Nettoyage après le test
AdFinalizer est une méthode dans pytest qui permet d'ajouter une fonction de nettoyage qui sera appelée après le test. Elle peut être utilisée dans une fixture via request.addfinalizer(cleanup_func).
Différences entre yield et addfinalizer :
yieldest une façon plus lisible et moderne d'organiser la configuration/démontage dans les fixtures.addfinalizerpermet d'ajouter plusieurs fonctions de nettoyage de manière dynamique.
Exemple avec addfinalizer :
import pytest
def cleanup():
print("Nettoyage après le test")
@pytest.fixture
def ma_ressource(request):
# configuration
request.addfinalizer(cleanup)
return some_resource
En général, yield est préféré pour les cas simples, addfinalizer pour des scénarios plus complexes avec plusieurs finalisateurs.