Maison >développement back-end >Tutoriel Python >Comment générer efficacement des tests unitaires paramétrés en Python ?

Comment générer efficacement des tests unitaires paramétrés en Python ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-23 17:23:13637parcourir

How to Efficiently Generate Parameterized Unit Tests in Python?

Comment générer des tests unitaires dynamiques (paramétrés) en Python

Introduction

Lors des tests fonctions complexes, il est souvent nécessaire de créer plusieurs cas de test avec des entrées légèrement différentes. La création manuelle de chaque scénario de test peut devenir fastidieuse et sujette aux erreurs. C'est là que les tests paramétrés entrent en jeu.

Paramétrisation

La paramétrisation vous permet de définir un seul scénario de test et de fournir une liste de valeurs de paramètres pour exécuter le test pour chacun. ensemble de paramètres. Cette approche automatise la génération de cas de test et garantit que toutes les entrées possibles sont testées.

Utilisation du paramètre de pytest

pytest fournit un décorateur pratique, @pytest.mark.parametrize, pour paramétrage des fonctions de test. Il prend comme argument une liste de tuples ou de dictionnaires, chacun représentant un ensemble de valeurs de paramètres.

import pytest

test_data = [
    ("foo", "a", "a"),
    ("bar", "a", "b"),
    ("lee", "b", "b"),
]

@pytest.mark.parametrize("name, a, b", test_data)
def test_sequence(name, a, b):
    assert a == b

Ce code générera trois tests, un pour chaque ensemble de paramètres dans test_data. Les noms des tests seront automatiquement générés en fonction des valeurs des paramètres.

Utilisation du package paramétré

Le package paramétré fournit une interface plus flexible pour la paramétrisation. Il vous permet de définir une fonction génératrice qui renvoie une séquence de cas de test.

from parameterized import parameterized

test_data = [
    ("foo", "a", "a"),
    ("bar", "a", "b"),
    ("lee", "b", "b"),
]

@parameterized.expand(test_data)
def test_sequence(name, a, b):
    assert a == b

Encore une fois, ce code générera trois tests, un pour chaque ensemble de paramètres dans test_data. Les noms des tests seront générés automatiquement.

Avantages

L'utilisation de tests paramétrés offre plusieurs avantages :

  • Duplication de code réduite : Génère plusieurs cas de test avec seulement des variances.
  • Lisibilité améliorée : Maintient le code de test concis et facile à comprendre.
  • Couverture de test améliorée : Garantit que tous les scénarios possibles sont testés.
  • Maintenabilité accrue : Facilite la mise à jour des tests lorsque les valeurs des paramètres changement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn