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.