Vier Kernmodule der Datenpipeline (Datenabruf.py, Datenschreiber.py, LayerLoader.py, excel_importer.py) bekommen Mock-Modus-Tests – sie waren laut Testkatalog die einzigen Module ganz ohne Testdatei. Issue: #63
QGIS-Test: nicht nötig – alle getesteten Funktionen sind reine Logik (String-/URL-Bau, Datei-/GeoPackage-Zugriff), im Mock-Modus ohne echtes QGIS-Rendering geprüft
Änderungen an Verträgen
keine – nur Tests ergänzt, dazu zwei fehlende Methoden (transformContext, addMapLayer) im bereits vorhandenen _MockQgsProject in qgiscore_wrapper.py nachgetragen (Mock-Vervollständigung, keine Verhaltensänderung für QGIS selbst)
Übergabenotiz
Aufgabe: Basis #63 – Tests für die vier ungetesteten Kernmodule der Datenpipeline
Stand: fertig
Geändert:
changelog.txt ergänzt
Nachweis: siehe oben
Entscheidungen/Annahmen: Tests decken die in #63 priorisierten Funktionen ab, nicht die volle Restliste aus docs/tests/testkatalog.md. filter_by_extent/filter_by_layer nutzen eigene Fake-Layer-Objekte statt der echten Mock-Klasse, da diese für den Vektor-Layer-Typ-Vergleich und dataProvider() nicht vollständig genug ist.
Offen / nächste Schritte: separates Issue für den vermuteten Bug in Datenschreiber._resolve_style_path/ly_style_wrapper.apply_style (hartkodierte Fachplugin-Namen) noch zu erstellen.
Wissensbasis: docs/wissen/fallstricke.md (unvollständiger _MockQgsProject), docs/architektur/modulkarte.md (Testdateizahl), docs/status/STATUS.md (Testzahlen, Wer-arbeitet-woran) – im separaten Commit im Projektwissen-Repo.
Kontext für die nächste Sitzung: docs/tests/testkatalog.md Abschnitt „Ungetestete Funktionen" (sn_basis) für weitere Kandidaten; das offene Bug-Issue zu den hartkodierten Stilpfaden.
Checkliste
Nur Änderungen zum Issue
Keine direkten Qt/QGIS-Importe, keine Debug-print
changelog.txt ergänzt
Wissensbasis nachgezogen
Was
Vier Kernmodule der Datenpipeline (Datenabruf.py, Datenschreiber.py, LayerLoader.py, excel_importer.py) bekommen Mock-Modus-Tests – sie waren laut Testkatalog die einzigen Module ganz ohne Testdatei. Issue: #63
Wie geprüft
- python scripts/run_tests.py sn_basis --baseline: GRÜN 166/166 bestanden, 0 Fehlschläge, 0 Fehler, unverändert gegenüber Baseline (vorher 96/96)
- QGIS-Test: nicht nötig – alle getesteten Funktionen sind reine Logik (String-/URL-Bau, Datei-/GeoPackage-Zugriff), im Mock-Modus ohne echtes QGIS-Rendering geprüft
Änderungen an Verträgen
keine – nur Tests ergänzt, dazu zwei fehlende Methoden (transformContext, addMapLayer) im bereits vorhandenen _MockQgsProject in qgiscore_wrapper.py nachgetragen (Mock-Vervollständigung, keine Verhaltensänderung für QGIS selbst)
Übergabenotiz
Aufgabe: Basis #63 – Tests für die vier ungetesteten Kernmodule der Datenpipeline
Stand: fertig
Geändert:
- tests/test_datenabruf.py (neu, 24 Tests) – datenabruf, _determine_spatial_filter, _build_provider_url (WFS/REST/WMS/Default), _fetch_features
- tests/test_datenschreiber.py (neu, 14 Tests) – schreibe_Daten, lade_Layer, _write_layer_to_gpkg, schreibe_log, _resolve_style_path
- tests/test_layerloader.py (neu, 25 Tests) – create_layer, CRS-Transformation, filter_by_extent, filter_by_layer, add_to_project
- tests/test_excel_importer.py (neu, 7 Tests) – import_xlsx (Erfolg + 3 Fehlerzweige)
- functions/qgiscore_wrapper.py – _MockQgsProject.transformContext()/addMapLayer() ergänzt (fehlten, siehe fallstricke.md)
- changelog.txt ergänzt
Nachweis: siehe oben
Entscheidungen/Annahmen: Tests decken die in #63 priorisierten Funktionen ab, nicht die volle Restliste aus docs/tests/testkatalog.md. filter_by_extent/filter_by_layer nutzen eigene Fake-Layer-Objekte statt der echten Mock-Klasse, da diese für den Vektor-Layer-Typ-Vergleich und dataProvider() nicht vollständig genug ist.
Offen / nächste Schritte: separates Issue für den vermuteten Bug in Datenschreiber._resolve_style_path/ly_style_wrapper.apply_style (hartkodierte Fachplugin-Namen) noch zu erstellen.
Wissensbasis: docs/wissen/fallstricke.md (unvollständiger _MockQgsProject), docs/architektur/modulkarte.md (Testdateizahl), docs/status/STATUS.md (Testzahlen, Wer-arbeitet-woran) – im separaten Commit im Projektwissen-Repo.
Kontext für die nächste Sitzung: docs/tests/testkatalog.md Abschnitt „Ungetestete Funktionen" (sn_basis) für weitere Kandidaten; das offene Bug-Issue zu den hartkodierten Stilpfaden.
Checkliste
- [x] Nur Änderungen zum Issue
- [x] Keine direkten Qt/QGIS-Importe, keine Debug-print
- [x] changelog.txt ergänzt
- [x] Wissensbasis nachgezogen
70 neue Testfälle für Datenabruf.py, Datenschreiber.py, LayerLoader.py und
excel_importer.py - die einzigen Module ohne jede Testdatei laut
Testkatalog-Abschnitt "Ungetestete Funktionen". Schwerpunkt: Provider-URL-
Bau (WFS/REST/OGR), Raumfilter, CRS-Transformation, GPKG-Schreib-/Ladepfad
und Excel-Import-Fehlerzweige.
qgiscore_wrapper._MockQgsProject um transformContext() und addMapLayer()
ergänzt - beide fehlten im Mock und ließen die betroffenen Funktionen im
Mock-Modus für jeden gültigen Layer scheitern (siehe fallstricke.md).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Daniel
merged commit b57a614ec3 into unstable2026-09-18 08:05:27 +00:00
Daniel
deleted branch feature/63-tests-datenpipeline2026-09-18 08:05:27 +00:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Was
Vier Kernmodule der Datenpipeline (Datenabruf.py, Datenschreiber.py, LayerLoader.py, excel_importer.py) bekommen Mock-Modus-Tests – sie waren laut Testkatalog die einzigen Module ganz ohne Testdatei. Issue: #63
Wie geprüft
Änderungen an Verträgen
keine – nur Tests ergänzt, dazu zwei fehlende Methoden (transformContext, addMapLayer) im bereits vorhandenen _MockQgsProject in qgiscore_wrapper.py nachgetragen (Mock-Vervollständigung, keine Verhaltensänderung für QGIS selbst)
Übergabenotiz
Aufgabe: Basis #63 – Tests für die vier ungetesteten Kernmodule der Datenpipeline
Stand: fertig
Geändert:
Nachweis: siehe oben
Entscheidungen/Annahmen: Tests decken die in #63 priorisierten Funktionen ab, nicht die volle Restliste aus docs/tests/testkatalog.md. filter_by_extent/filter_by_layer nutzen eigene Fake-Layer-Objekte statt der echten Mock-Klasse, da diese für den Vektor-Layer-Typ-Vergleich und dataProvider() nicht vollständig genug ist.
Offen / nächste Schritte: separates Issue für den vermuteten Bug in Datenschreiber._resolve_style_path/ly_style_wrapper.apply_style (hartkodierte Fachplugin-Namen) noch zu erstellen.
Wissensbasis: docs/wissen/fallstricke.md (unvollständiger _MockQgsProject), docs/architektur/modulkarte.md (Testdateizahl), docs/status/STATUS.md (Testzahlen, Wer-arbeitet-woran) – im separaten Commit im Projektwissen-Repo.
Kontext für die nächste Sitzung: docs/tests/testkatalog.md Abschnitt „Ungetestete Funktionen" (sn_basis) für weitere Kandidaten; das offene Bug-Issue zu den hartkodierten Stilpfaden.
Checkliste