Sobes.tech
Senior

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 :

  • yield est une façon plus lisible et moderne d'organiser la configuration/démontage dans les fixtures.
  • addfinalizer permet 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.