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 :
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!