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
Libérer: 2024-11-23 17:23:13
original
603 Les gens l'ont consulté

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
Copier après la connexion

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal