Les sous-tests natifs
pytest 9.0 intègre un support natif des sous-tests via pytest.subTest(). Contrairement à @pytest.mark.parametrize, les sous-tests permettent de regrouper des vérifications multiples dans un même test tout en rapportant chaque échec individuellement.
Exemple pratique
python
import pytest
def test_conversions():
cas = [
('km', 'miles', 1.0, 0.621),
('kg', 'lbs', 1.0, 2.205),
('C', 'F', 100.0, 212.0),
]
for src, dst, valeur, attendu in cas:
with pytest.subTest(src=src, dst=dst):
resultat = convertir(src, dst, valeur)
assert resultat == pytest.approx(attendu, rel=1e-2)
# Avantage vs parametrize :
# - Tous les sous-tests s'exécutent même si l'un échoue
# - Le rapport indique quel sous-test a échoué
# - Pas besoin de décorer la fonction
