Tutoriel

Statut éditorial : En attente de relecture

Ajouter des tests unitaires à un projet Python avec un assistant IA

Utiliser un assistant pour cartographier les comportements, proposer des cas et écrire des tests pytest que vous validez réellement.

Classification du contenu

Types

  • Outils

Technologies

Niveau
Intermédiaire
Publié le
23 août 2026
Dernière relecture
Relecture en attente
Prochaine vérification
23 novembre 2026

Un assistant peut accélérer l’inventaire des cas, mais un test généré n’est utile que s’il échoue pour la bonne raison. Commencez par comprendre le contrat de la fonction et les effets de bord.

Installer et établir la référence

~~~bash python -m venv .venv source .venv/bin/activate pip install -U pytest pytest-cov pytest ~~~

Travaillez sur une branche. Donnez à l’assistant le fichier ciblé, ses types et les tests existants, pas tout le dépôt sans nécessité.

Demander une matrice avant le code

Prompt utile : « Analyse cette fonction sans la modifier. Liste comportements nominaux, limites, erreurs, effets de bord et dépendances. Propose une matrice de tests et indique les hypothèses. »

Validez les hypothèses métier. L’assistant ne connaît pas si un montant négatif doit être refusé, arrondi ou remboursé.

Écrire un premier test

~~~python import pytest from pricing import total_with_vat

@pytest.mark.parametrize( 'amount,rate,expected', [ (100, 0.20, 120), (0, 0.20, 0), (19.99, 0.055, 21.09), ], ) def test_total_with_vat(amount, rate, expected): assert total_with_vat(amount, rate) == expected

def test_total_rejects_negative_amount(): with pytest.raises(ValueError, match='montant'): total_with_vat(-1, 0.20) ~~~

La paramétrisation rend les variantes lisibles. Évitez plusieurs comportements indépendants dans une seule assertion géante.

Tester les dépendances

Injectez horloge, client HTTP et repository plutôt que de patcher profondément des modules. Utilisez une fixture pour construire un faux stable. Ne mockez pas la fonction testée et n’assert pas seulement que le mock a été appelé : vérifiez la sortie ou l’état observable.

Vérifier que le test protège

Modifiez temporairement l’implémentation ou utilisez mutation testing : le test doit échouer. Relisez les assertions, exécutez chaque test seul et vérifiez qu’il ne dépend pas de l’ordre, du réseau ou de l’heure réelle.

Couverture

~~~bash pytest --cov=src --cov-report=term-missing ~~~

La couverture révèle des lignes non exécutées, pas la pertinence des assertions. Priorisez règles métier, erreurs et régressions observées.

FAQ

Peut-on accepter les tests générés si tout passe ?

Non. Ils peuvent reproduire l’implémentation, masquer un bug ou ne rien affirmer d’utile.

Faut-il demander aussi la correction du code ?

Séparez les étapes : caractérisez d’abord le comportement actuel, puis décidez explicitement du changement.

Sources utilisées