test: fige l'extraction des PDF réels en références golden
Les parseurs sont la partie la plus exposée aux régressions silencieuses :
un décalage de colonne ne lève aucune exception, il produit des montants
faux. Rien ne les couvrait jusqu'ici.
Chaque PDF du corpus local produit une empreinte (structure des lots,
totaux par lot, montants par catégorie, détail de chaque opération)
comparée à une référence figée. Les libellés sensibles — locataire,
fournisseur, description — sont réduits à un hash court : un changement
reste détecté sans recopier la donnée.
Ni les PDF (`data/`) ni les références (`tests/golden/`) ne sont
versionnés : la suite se saute d'elle-même là où le corpus est absent.
Régénération après un changement volontaire de parseur :
uv run pytest tests/test_parsers_golden.py --regen-golden
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -5,6 +5,22 @@ import pytest
|
||||
from plesna_gerance.database import connection
|
||||
|
||||
|
||||
def pytest_addoption(parser):
|
||||
"""Ajoute --regen-golden pour refiger les références des parseurs."""
|
||||
parser.addoption(
|
||||
"--regen-golden",
|
||||
action="store_true",
|
||||
default=False,
|
||||
help="Réécrit les références de tests/golden au lieu de les comparer.",
|
||||
)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def regen_golden(request) -> bool:
|
||||
"""Vrai quand la suite est lancée avec --regen-golden."""
|
||||
return request.config.getoption("--regen-golden")
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def db_session(tmp_path, monkeypatch):
|
||||
"""Session SQLAlchemy sur une base SQLite temporaire et isolée.
|
||||
|
||||
Reference in New Issue
Block a user