Test-Audit sn_basis fortgesetzt: landkreise.py und LayerLoader.py fachlich geprüft (#76)
38 Testfälle fachlich geprüft und markiert: test_landkreise.py komplett (6, inkl. 4 neuer Tests) und test_layerloader.py komplett (32, inkl. 7 neuer Tests). Dabei gefunden und in Plugin_SN_Basis als Issues vorbereitet (Absenden durch den Menschen): #80 (REST-Link ohne Layer-Index lädt still Layer 0), #81 (unbekannter Provider fällt still auf ogr zurück), #82 (Datenabruf und LayerLoader bauen aus demselben REST-Link widersprüchliche URLs), #83 (filter_by_extent/filter_by_layer reichen ungültige Layer still durch). Testkatalog neu erzeugt. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
+52
-39
@@ -8,21 +8,21 @@ für die fachliche Frage, ob die Abdeckung sinnvoll ist. Die Angaben stammen aus
|
||||
selbst (Docstrings) und aus der Testbaseline.
|
||||
|
||||
Stand der Baseline: `docs/status/testbaseline.json` (SHA-256 `aeabc946a7f3`)
|
||||
Stand des Prüf-Audits: `docs/status/testpruefungen.json` (SHA-256 `ab63e2f916cd`)
|
||||
Stand des Prüf-Audits: `docs/status/testpruefungen.json` (SHA-256 `2f7e27c76ee7`)
|
||||
|
||||
Gesamt: 3 Pakete, 49 Testdateien, 581 Testfälle – 538 grün, 35 rot (Baseline), 8 übersprungen.
|
||||
Mit Beschreibung (Docstring): 436 von 581 (75 %).
|
||||
Fachlich geprüft: 122 von 581 (21 %) aktuell, 0 veraltet seit Codeänderung, 459 nie geprüft.
|
||||
Gesamt: 3 Pakete, 49 Testdateien, 592 Testfälle – 549 grün, 35 rot (Baseline), 8 übersprungen.
|
||||
Mit Beschreibung (Docstring): 447 von 592 (76 %).
|
||||
Fachlich geprüft: 160 von 592 (27 %) aktuell, 0 veraltet seit Codeänderung, 432 nie geprüft.
|
||||
Strukturelle Lücken (heuristisch, Namensabgleich): 145 von 413 (35 %) Funktionen/Methoden ohne erkennbaren Testbezug – Abschnitt „Ungetestete Funktionen“.
|
||||
|
||||
## Zusammenfassung
|
||||
|
||||
| Paket | Testdateien | Testfälle | grün | rot (Baseline) | übersprungen | mit Beschreibung | fachlich geprüft | ohne Testbezug |
|
||||
| --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: |
|
||||
| `sn_basis` | 32 | 329 | 329 | 0 | 0 | 329 von 329 (100 %) | 122 von 329 (37 %) | 72 von 229 (31 %) |
|
||||
| `sn_basis` | 32 | 340 | 340 | 0 | 0 | 340 von 340 (100 %) | 160 von 340 (47 %) | 72 von 229 (31 %) |
|
||||
| `sn_verfahrensgebiet` | 12 | 208 | 166 | 34 | 8 | 106 von 208 (51 %) | 0 von 208 (0 %) | 34 von 104 (33 %) |
|
||||
| `sn_plan41` | 5 | 44 | 43 | 1 | 0 | 1 von 44 (2 %) | 0 von 44 (0 %) | 39 von 80 (49 %) |
|
||||
| **Summe** | **49** | **581** | **538** | **35** | **8** | **436 von 581 (75 %)** | **122 von 581 (21 %)** | **145 von 413 (35 %)** |
|
||||
| **Summe** | **49** | **592** | **549** | **35** | **8** | **447 von 592 (76 %)** | **160 von 592 (27 %)** | **145 von 413 (35 %)** |
|
||||
|
||||
### Legende
|
||||
|
||||
@@ -36,7 +36,7 @@ Strukturelle Lücken (heuristisch, Namensabgleich): 145 von 413 (35 %) Funktione
|
||||
|
||||
## Paket `sn_basis`
|
||||
|
||||
Plattform-Plugin, Ordner `Plugin_SN_Basis` – 32 Testdateien mit 329 Testfällen (329 grün, 0 rot, 0 übersprungen).
|
||||
Plattform-Plugin, Ordner `Plugin_SN_Basis` – 32 Testdateien mit 340 Testfällen (340 grün, 0 rot, 0 übersprungen).
|
||||
|
||||
### `Plugin_SN_Basis/tests/test_base_dockwidget.py`
|
||||
|
||||
@@ -237,12 +237,18 @@ Worum es in der Datei geht: Tests für sn_basis/functions/landkreise.py::_lade_l
|
||||
|
||||
Testgruppen:
|
||||
|
||||
- `LadeLandkreiseTests` (2 Testfälle): — (Docstring fehlt)
|
||||
- `LadeLandkreiseTests` (4 Testfälle): — (Docstring fehlt)
|
||||
- `LandkreislisteVollstaendigkeitTests` (1 Testfälle): — (Docstring fehlt)
|
||||
- `AlleLandkreiseSentinelTests` (1 Testfälle): — (Docstring fehlt)
|
||||
|
||||
| Testfall | prüft | Status | geprüft |
|
||||
| --- | --- | --- | --- |
|
||||
| `LadeLandkreiseTests.test_laedt_die_echte_landkreisliste_nicht_leer` | Prüft, dass _lade_landkreise die echte landkreise.json als nicht-leere Liste von (Kennzahl, Name)-Tupeln liefert. | grün | nie geprüft |
|
||||
| `LadeLandkreiseTests.test_fehlende_datei_liefert_leere_liste` | Prüft, dass eine nicht lesbare Datenquelle eine leere Liste liefert, statt eine Ausnahme zu werfen. | grün | nie geprüft |
|
||||
| `LadeLandkreiseTests.test_laedt_die_echte_landkreisliste_nicht_leer` | Prüft, dass _lade_landkreise die echte landkreise.json als nicht-leere Liste von (Kennzahl, Name)-Tupeln liefert. | grün | geprüft am 2026-09-22 |
|
||||
| `LadeLandkreiseTests.test_fehlende_datei_liefert_leere_liste` | Prüft, dass eine nicht lesbare Datenquelle eine leere Liste liefert, statt eine Ausnahme zu werfen. | grün | geprüft am 2026-09-22 |
|
||||
| `LadeLandkreiseTests.test_ungueltiges_json_liefert_leere_liste` | Prüft, dass eine Datei mit syntaktisch ungültigem JSON eine leere Liste liefert, statt eine Ausnahme zu werfen. | grün | geprüft am 2026-09-22 |
|
||||
| `LadeLandkreiseTests.test_alle_kennzahlen_kommen_genau_einmal_vor` | Prüft, dass jede Landkreiskennzahl in der geladenen Landkreisliste genau einmal vorkommt. | grün | geprüft am 2026-09-22 |
|
||||
| `LandkreislisteVollstaendigkeitTests.test_landkreisliste_enthaelt_alle_13_saechsischen_gebietskoerperschaften` | Prüft, dass die geladene Landkreisliste genau die 13 amtlichen sächsischen Kreisschlüssel und Namen enthält. | grün | geprüft am 2026-09-22 |
|
||||
| `AlleLandkreiseSentinelTests.test_alle_landkreise_sentinel_kollidiert_nicht_mit_echter_kennzahl` | Prüft, dass die Sentinel-Kennzahl ALLE_LANDKREISE mit keiner echten Landkreiskennzahl übereinstimmt. | grün | geprüft am 2026-09-22 |
|
||||
|
||||
### `Plugin_SN_Basis/tests/test_layerloader.py`
|
||||
|
||||
@@ -250,40 +256,47 @@ Worum es in der Datei geht: Tests für sn_basis/modules/LayerLoader.py (Layer er
|
||||
|
||||
Testgruppen:
|
||||
|
||||
- `CreateLayerTests` (7 Testfälle): — (Docstring fehlt)
|
||||
- `TransformGeometryTests` (3 Testfälle): — (Docstring fehlt)
|
||||
- `TransformExtentTests` (2 Testfälle): — (Docstring fehlt)
|
||||
- `CreateLayerTests` (12 Testfälle): — (Docstring fehlt)
|
||||
- `TransformGeometryTests` (4 Testfälle): — (Docstring fehlt)
|
||||
- `TransformExtentTests` (3 Testfälle): — (Docstring fehlt)
|
||||
- `FilterByExtentTests` (6 Testfälle): — (Docstring fehlt)
|
||||
- `FilterByLayerTests` (4 Testfälle): — (Docstring fehlt)
|
||||
- `AddToProjectTests` (3 Testfälle): — (Docstring fehlt)
|
||||
|
||||
| Testfall | prüft | Status | geprüft |
|
||||
| --- | --- | --- | --- |
|
||||
| `CreateLayerTests.test_wfs_baut_uri_ohne_getfeature_parameter` | Prüft, dass für WFS die GetFeature-spezifischen Parameter aus der URI entfernt werden. | grün | nie geprüft |
|
||||
| `CreateLayerTests.test_wfs_mit_url_praefix_wird_nicht_doppelt_gesetzt` | Prüft, dass ein bereits vorhandenes 'url='-Präfix im WFS-Link nicht verdoppelt wird. | grün | nie geprüft |
|
||||
| `CreateLayerTests.test_wms_baut_url_praefix_und_nutzt_rasterlayer` | Prüft, dass WMS-Layer über QgsRasterLayer mit 'url='-Präfix erzeugt werden. | grün | nie geprüft |
|
||||
| `CreateLayerTests.test_rest_featureserver_ergaenzt_layer_index` | Prüft, dass ein REST-Link auf '.../FeatureServer' automatisch um '/0' ergänzt wird. | grün | nie geprüft |
|
||||
| `CreateLayerTests.test_ogr_provider_nutzt_link_direkt` | Prüft, dass ein OGR-Provider den Link unverändert an QgsVectorLayer übergibt. | grün | nie geprüft |
|
||||
| `CreateLayerTests.test_ungueltiger_layer_meldet_layer_nicht_verfuegbar` | Prüft, dass ein ungültig erzeugter Layer als 'layer_nicht_verfuegbar' gemeldet wird und None liefert. | grün | nie geprüft |
|
||||
| `CreateLayerTests.test_ausnahme_beim_erstellen_wird_abgefangen` | Prüft, dass eine Ausnahme beim Layer-Erstellen abgefangen und als Fehlerergebnis gemeldet wird. | grün | nie geprüft |
|
||||
| `TransformGeometryTests.test_fehlender_layer_liefert_geometrie_unveraendert` | Prüft, dass ohne Quell- oder Ziel-Layer die Geometrie unverändert zurückgegeben wird. | grün | nie geprüft |
|
||||
| `TransformGeometryTests.test_gleiche_crs_liefert_geometrie_unveraendert` | Prüft, dass bei identischem CRS von Quelle und Ziel keine Transformation stattfindet. | grün | nie geprüft |
|
||||
| `TransformGeometryTests.test_unterschiedliche_crs_klont_und_transformiert_geometrie` | Prüft, dass bei unterschiedlichem CRS eine geklonte, transformierte Geometrie geliefert wird. | grün | nie geprüft |
|
||||
| `TransformExtentTests.test_gleiche_crs_liefert_extent_unveraendert` | Prüft, dass bei identischem CRS von Quelle und Ziel der Extent unverändert bleibt. | grün | nie geprüft |
|
||||
| `TransformExtentTests.test_unterschiedliche_crs_nutzt_coordinate_transform` | Prüft, dass bei unterschiedlichem CRS der Extent über QgsCoordinateTransform umgerechnet wird. | grün | nie geprüft |
|
||||
| `FilterByExtentTests.test_ungueltiger_layer_wird_unveraendert_zurueckgegeben` | Prüft, dass ein ungültiger Layer von filter_by_extent unverändert zurückgegeben wird. | grün | nie geprüft |
|
||||
| `FilterByExtentTests.test_ohne_extent_wird_layer_unveraendert_zurueckgegeben` | Prüft, dass ohne Extent (None) der Layer unverändert zurückgegeben wird. | grün | nie geprüft |
|
||||
| `FilterByExtentTests.test_falscher_layertyp_wird_unveraendert_zurueckgegeben` | Prüft, dass ein Nicht-Vektor-Layer (z. B. Rasterlayer) unverändert zurückgegeben wird. | grün | nie geprüft |
|
||||
| `FilterByExtentTests.test_keine_treffer_liefert_none` | Prüft, dass ein Raumfilter ohne Treffer None statt eines leeren Layers liefert. | grün | nie geprüft |
|
||||
| `FilterByExtentTests.test_abbruch_liefert_none_und_meldet_needs_user_action` | Prüft, dass ein Abbruch während des Raumfilters None liefert und gemeldet wird. | grün | nie geprüft |
|
||||
| `FilterByExtentTests.test_erfolgreicher_filter_liefert_neuen_layer_mit_features` | Prüft, dass ein erfolgreicher BBOX-Filter einen neuen Speicherlayer mit den gefundenen Features liefert. | grün | nie geprüft |
|
||||
| `FilterByLayerTests.test_ungueltiger_layer_oder_filterlayer_wird_unveraendert_zurueckgegeben` | Prüft, dass ein ungültiger Haupt- oder Filter-Layer unverändert zurückgegeben wird. | grün | nie geprüft |
|
||||
| `FilterByLayerTests.test_filterlayer_ohne_features_liefert_none` | Prüft, dass ein Filter-Layer ohne Features (leere Vereinigungsgeometrie) None liefert. | grün | nie geprüft |
|
||||
| `FilterByLayerTests.test_erfolgreicher_geometriefilter_liefert_neuen_layer` | Prüft, dass ein erfolgreicher Geometriefilter einen neuen Speicherlayer mit den passenden Features liefert. | grün | nie geprüft |
|
||||
| `FilterByLayerTests.test_keine_ueberschneidung_liefert_none` | Prüft, dass ohne überschneidende Features None statt eines leeren Layers geliefert wird. | grün | nie geprüft |
|
||||
| `AddToProjectTests.test_gueltiger_layer_wird_dem_projekt_hinzugefuegt` | Prüft, dass ein gültiger Layer über QgsProject.instance().addMapLayer hinzugefügt wird. | grün | nie geprüft |
|
||||
| `AddToProjectTests.test_ungueltiger_layer_wird_nicht_hinzugefuegt` | Prüft, dass ein ungültiger Layer nicht ans Projekt übergeben wird. | grün | nie geprüft |
|
||||
| `AddToProjectTests.test_none_layer_wird_nicht_hinzugefuegt` | Prüft, dass ein fehlender Layer (None) nicht ans Projekt übergeben wird. | grün | nie geprüft |
|
||||
| `CreateLayerTests.test_wfs_baut_uri_ohne_getfeature_parameter` | Prüft, dass für WFS die GetFeature-spezifischen Parameter aus der URI entfernt werden. | grün | geprüft am 2026-09-22 |
|
||||
| `CreateLayerTests.test_wfs_mit_url_praefix_wird_nicht_doppelt_gesetzt` | Prüft, dass ein bereits vorhandenes 'url='-Präfix im WFS-Link nicht verdoppelt wird. | grün | geprüft am 2026-09-22 |
|
||||
| `CreateLayerTests.test_wms_baut_url_praefix_und_nutzt_rasterlayer` | Prüft, dass WMS-Layer über QgsRasterLayer mit 'url='-Präfix erzeugt werden. | grün | geprüft am 2026-09-22 |
|
||||
| `CreateLayerTests.test_rest_featureserver_ergaenzt_layer_index` | Prüft, dass ein REST-Link auf '.../FeatureServer' automatisch um '/0' ergänzt wird. | grün | geprüft am 2026-09-22 |
|
||||
| `CreateLayerTests.test_ogr_provider_nutzt_link_direkt` | Prüft, dass ein OGR-Provider den Link unverändert an QgsVectorLayer übergibt. | grün | geprüft am 2026-09-22 |
|
||||
| `CreateLayerTests.test_ungueltiger_layer_meldet_layer_nicht_verfuegbar` | Prüft, dass ein ungültig erzeugter Layer als 'layer_nicht_verfuegbar' gemeldet wird und None liefert. | grün | geprüft am 2026-09-22 |
|
||||
| `CreateLayerTests.test_ausnahme_beim_erstellen_wird_abgefangen` | Prüft, dass eine Ausnahme beim Layer-Erstellen abgefangen und als Fehlerergebnis gemeldet wird. | grün | geprüft am 2026-09-22 |
|
||||
| `CreateLayerTests.test_unbekannter_provider_faellt_auf_ogr_zurueck` | Prüft, dass ein unbekannter Provider wie 'ogr' behandelt wird und den Link unverändert übergibt. | grün | geprüft am 2026-09-22 |
|
||||
| `CreateLayerTests.test_rest_ohne_featureserver_endung_bleibt_unveraendert` | Prüft, dass ein REST-Link ohne 'FeatureServer'-Endung nicht um '/0' ergänzt wird. | grün | geprüft am 2026-09-22 |
|
||||
| `CreateLayerTests.test_rest_mit_url_praefix_wird_nicht_doppelt_gesetzt` | Prüft, dass ein bereits vorhandenes 'url='-Präfix im REST-Link nicht verdoppelt wird. | grün | geprüft am 2026-09-22 |
|
||||
| `CreateLayerTests.test_wfs_erkennt_typename_in_grossschreibung` | Prüft, dass für WFS auch der Parameter 'TYPENAME' (Großschreibung) als Layername erkannt wird. | grün | geprüft am 2026-09-22 |
|
||||
| `CreateLayerTests.test_wfs_ergaenzt_service_und_version_defaults` | Prüft, dass für WFS ohne 'service'/'version'-Parameter die Defaults 'WFS'/'2.0.0' ergänzt werden. | grün | geprüft am 2026-09-22 |
|
||||
| `TransformGeometryTests.test_fehlender_layer_liefert_geometrie_unveraendert` | Prüft, dass ohne Quell- oder Ziel-Layer die Geometrie unverändert zurückgegeben wird. | grün | geprüft am 2026-09-22 |
|
||||
| `TransformGeometryTests.test_gleiche_crs_liefert_geometrie_unveraendert` | Prüft, dass bei identischem CRS von Quelle und Ziel keine Transformation stattfindet. | grün | geprüft am 2026-09-22 |
|
||||
| `TransformGeometryTests.test_unterschiedliche_crs_klont_und_transformiert_geometrie` | Prüft, dass bei unterschiedlichem CRS eine geklonte, transformierte Geometrie geliefert wird. | grün | geprüft am 2026-09-22 |
|
||||
| `TransformGeometryTests.test_ausnahme_bei_der_transformation_liefert_geometrie_unveraendert` | Prüft, dass eine Ausnahme während der CRS-Transformation abgefangen wird und die ursprüngliche Geometrie unverändert liefert. | grün | geprüft am 2026-09-22 |
|
||||
| `TransformExtentTests.test_gleiche_crs_liefert_extent_unveraendert` | Prüft, dass bei identischem CRS von Quelle und Ziel der Extent unverändert bleibt. | grün | geprüft am 2026-09-22 |
|
||||
| `TransformExtentTests.test_unterschiedliche_crs_nutzt_coordinate_transform` | Prüft, dass bei unterschiedlichem CRS der Extent über QgsCoordinateTransform umgerechnet wird. | grün | geprüft am 2026-09-22 |
|
||||
| `TransformExtentTests.test_ausnahme_bei_der_extent_transformation_liefert_extent_unveraendert` | Prüft, dass eine Ausnahme während der Extent-Transformation abgefangen wird und den ursprünglichen Extent unverändert liefert. | grün | geprüft am 2026-09-22 |
|
||||
| `FilterByExtentTests.test_ungueltiger_layer_wird_unveraendert_zurueckgegeben` | Prüft, dass ein ungültiger Layer von filter_by_extent unverändert zurückgegeben wird. | grün | geprüft am 2026-09-22 |
|
||||
| `FilterByExtentTests.test_ohne_extent_wird_layer_unveraendert_zurueckgegeben` | Prüft, dass ohne Extent (None) der Layer unverändert zurückgegeben wird. | grün | geprüft am 2026-09-22 |
|
||||
| `FilterByExtentTests.test_falscher_layertyp_wird_unveraendert_zurueckgegeben` | Prüft, dass ein Nicht-Vektor-Layer (z. B. Rasterlayer) unverändert zurückgegeben wird. | grün | geprüft am 2026-09-22 |
|
||||
| `FilterByExtentTests.test_keine_treffer_liefert_none` | Prüft, dass ein Raumfilter ohne Treffer None statt eines leeren Layers liefert. | grün | geprüft am 2026-09-22 |
|
||||
| `FilterByExtentTests.test_abbruch_liefert_none_und_meldet_needs_user_action` | Prüft, dass ein Abbruch während des Raumfilters None liefert und gemeldet wird. | grün | geprüft am 2026-09-22 |
|
||||
| `FilterByExtentTests.test_erfolgreicher_filter_liefert_neuen_layer_mit_features` | Prüft, dass ein erfolgreicher BBOX-Filter einen neuen Speicherlayer mit den gefundenen Features liefert. | grün | geprüft am 2026-09-22 |
|
||||
| `FilterByLayerTests.test_ungueltiger_layer_oder_filterlayer_wird_unveraendert_zurueckgegeben` | Prüft, dass ein ungültiger Haupt- oder Filter-Layer unverändert zurückgegeben wird. | grün | geprüft am 2026-09-22 |
|
||||
| `FilterByLayerTests.test_filterlayer_ohne_features_liefert_none` | Prüft, dass ein Filter-Layer ohne Features (leere Vereinigungsgeometrie) None liefert. | grün | geprüft am 2026-09-22 |
|
||||
| `FilterByLayerTests.test_erfolgreicher_geometriefilter_liefert_neuen_layer` | Prüft, dass ein erfolgreicher Geometriefilter einen neuen Speicherlayer mit den passenden Features liefert. | grün | geprüft am 2026-09-22 |
|
||||
| `FilterByLayerTests.test_keine_ueberschneidung_liefert_none` | Prüft, dass ohne überschneidende Features None statt eines leeren Layers geliefert wird. | grün | geprüft am 2026-09-22 |
|
||||
| `AddToProjectTests.test_gueltiger_layer_wird_dem_projekt_hinzugefuegt` | Prüft, dass ein gültiger Layer über QgsProject.instance().addMapLayer hinzugefügt wird. | grün | geprüft am 2026-09-22 |
|
||||
| `AddToProjectTests.test_ungueltiger_layer_wird_nicht_hinzugefuegt` | Prüft, dass ein ungültiger Layer nicht ans Projekt übergeben wird. | grün | geprüft am 2026-09-22 |
|
||||
| `AddToProjectTests.test_none_layer_wird_nicht_hinzugefuegt` | Prüft, dass ein fehlender Layer (None) nicht ans Projekt übergeben wird. | grün | geprüft am 2026-09-22 |
|
||||
|
||||
### `Plugin_SN_Basis/tests/test_layerpruefer.py`
|
||||
|
||||
@@ -1249,7 +1262,7 @@ Arbeitsliste: Diese Testfälle haben keinen Docstring; was sie fachlich prüfen,
|
||||
aus dem Quelltext erschließen. Jeder Eintrag braucht eine einzeilige Beschreibung im Testfall,
|
||||
dann verschwindet er hier von selbst.
|
||||
|
||||
### `sn_basis` – 0 von 329 Testfällen ohne Beschreibung
|
||||
### `sn_basis` – 0 von 340 Testfällen ohne Beschreibung
|
||||
|
||||
Keine Lücken.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user