Native Subtests
pytest 9.0 adds native subtest support via pytest.subTest(). Unlike @pytest.mark.parametrize, subtests let you group multiple checks within a single test while reporting each failure individually.
Practical Example
python
import pytest
def test_conversions():
cases = [
('km', 'miles', 1.0, 0.621),
('kg', 'lbs', 1.0, 2.205),
('C', 'F', 100.0, 212.0),
]
for src, dst, value, expected in cases:
with pytest.subTest(src=src, dst=dst):
result = convert(src, dst, value)
assert result == pytest.approx(expected, rel=1e-2)
# Advantage vs parametrize:
# - All subtests run even if one fails
# - Report shows which subtest failed
# - No decorator needed
