Démontage des fixtures

Introduction aux tests en Python

Alexander Levin

Data Scientist

Qu'est-ce qu'un démontage de fixture

  • Démontage de fixture – processus de nettoyage (« démontage ») des ressources allouées ou créées lors de la préparation de l'environnement de test.

Rappelez-vous l'analogie du « pique-nique » :

  1. Inviter des amis et préparer la nourriture
  2. S'amuser !
  3. Ranger – c'est le démontage
Introduction aux tests en Python

Pourquoi utiliser des démontages

Il est important de nettoyer l'environnement à la fin d'un test. Sans démontage, on risque :

  • Fuites de mémoire
  • Lenteur d'exécution et problèmes de performance
  • Résultats de test invalides
  • Échecs et erreurs de pipeline
Introduction aux tests en Python

Quand l'utiliser

Quand l'utiliser :

  • Gros objets
  • Plus d'un test
  • Usage de autouse

Quand ce n'est pas nécessaire :

  • Un script simple avec un seul test
Introduction aux tests en Python

Évaluation paresseuse en Python

  • yield – mot-clé Python qui permet de créer des générateurs
# Example of generator function
def lazy_increment(n):
    for i in range(n):
        yield i
f = lazy_increment(5)
next(f) # 0
next(f) # 1
next(f) # 2
Introduction aux tests en Python

Mode d'emploi

Comment faire :

  • Remplacer return par yield
  • Mettre le code de démontage après yield
  • Garder le code d'initialisation seulement avant yield
Introduction aux tests en Python

Exemple de démontage

@pytest.fixture
def init_list():
    return []

@pytest.fixture(autouse=True)
def add_numbers_to_list(init_list):
    # Fixture Setup
    init_list.extend([i for i in range(10)])
    # Fixture output
    yield init_list
    # Teardown statement
    init_list.clear()

def test_9(init_list):
    assert 9 in init_list
Introduction aux tests en Python

En résumé

  • Définition : le démontage de fixture est le nettoyage des ressources allouées lors de la préparation.
  • Utilisation :
    • Le mot-clé yield au lieu de return
    • Code de démontage après yield
  • Avantages :
    • Évite des défaillances logicielles
    • Évite des baisses de performance
  • Quand l'utiliser : toujours, dès que vous avez plus d'un test !
Introduction aux tests en Python

Passons à la pratique !

Introduction aux tests en Python

Preparing Video For Download...