Test-Audit sn_basis fortgesetzt: message_wrapper.py fachlich geprüft (#76)
5 Testfälle fachlich geprüft und markiert: test_message_wrapper.py komplett (inkl. 1 neuer Test für die Meldungsstufen von info/warning/error/success). Nebenbefund: die Namens-Heuristik des Testkatalogs führte warning als referenziert, weil es in test_pruefmanager/test_dockmanager nur per @patch ersetzt wird (bekannte, in testkatalog.py dokumentierte Grenze). Testkatalog neu erzeugt. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
+16
-19
@@ -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 `86bcb6ced85a`)
|
||||
Stand des Prüf-Audits: `docs/status/testpruefungen.json` (SHA-256 `4ed158c391ca`)
|
||||
|
||||
Gesamt: 3 Pakete, 49 Testdateien, 596 Testfälle – 553 grün, 35 rot (Baseline), 8 übersprungen.
|
||||
Mit Beschreibung (Docstring): 451 von 596 (76 %).
|
||||
Fachlich geprüft: 176 von 596 (30 %) aktuell, 0 veraltet seit Codeänderung, 420 nie geprüft.
|
||||
Strukturelle Lücken (heuristisch, Namensabgleich): 145 von 413 (35 %) Funktionen/Methoden ohne erkennbaren Testbezug – Abschnitt „Ungetestete Funktionen“.
|
||||
Gesamt: 3 Pakete, 49 Testdateien, 597 Testfälle – 554 grün, 35 rot (Baseline), 8 übersprungen.
|
||||
Mit Beschreibung (Docstring): 452 von 597 (76 %).
|
||||
Fachlich geprüft: 181 von 597 (30 %) aktuell, 0 veraltet seit Codeänderung, 416 nie geprüft.
|
||||
Strukturelle Lücken (heuristisch, Namensabgleich): 143 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 | 344 | 344 | 0 | 0 | 344 von 344 (100 %) | 176 von 344 (51 %) | 72 von 229 (31 %) |
|
||||
| `sn_basis` | 32 | 345 | 345 | 0 | 0 | 345 von 345 (100 %) | 181 von 345 (52 %) | 70 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** | **596** | **553** | **35** | **8** | **451 von 596 (76 %)** | **176 von 596 (30 %)** | **145 von 413 (35 %)** |
|
||||
| **Summe** | **49** | **597** | **554** | **35** | **8** | **452 von 597 (76 %)** | **181 von 597 (30 %)** | **143 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 344 Testfällen (344 grün, 0 rot, 0 übersprungen).
|
||||
Plattform-Plugin, Ordner `Plugin_SN_Basis` – 32 Testdateien mit 345 Testfällen (345 grün, 0 rot, 0 übersprungen).
|
||||
|
||||
### `Plugin_SN_Basis/tests/test_base_dockwidget.py`
|
||||
|
||||
@@ -384,13 +384,15 @@ Testgruppen:
|
||||
|
||||
- `GetMessageBarTests` (2 Testfälle): — (Docstring fehlt)
|
||||
- `PushMessageTests` (2 Testfälle): — (Docstring fehlt)
|
||||
- `MeldungsstufenTests` (1 Testfälle): — (Docstring fehlt)
|
||||
|
||||
| Testfall | prüft | Status | geprüft |
|
||||
| --- | --- | --- | --- |
|
||||
| `GetMessageBarTests.test_liefert_objekt_mit_pushmessage_methode` | Prüft, dass _get_message_bar ein Objekt mit aufrufbarer pushMessage()-Methode liefert. | grün | nie geprüft |
|
||||
| `GetMessageBarTests.test_faellt_bei_fehlerhaftem_iface_auf_mock_bar_zurueck` | Prüft, dass ein Fehler beim Zugriff auf iface.messageBar() auf eine funktionierende Mock-MessageBar zurückfällt. | grün | nie geprüft |
|
||||
| `PushMessageTests.test_liefert_dict_mit_titel_text_level_und_dauer` | Prüft, dass push_message im Mock-Modus ein Dict mit den übergebenen Werten liefert. | grün | nie geprüft |
|
||||
| `PushMessageTests.test_fehler_in_der_message_bar_wird_abgefangen` | Prüft, dass eine fehlschlagende MessageBar push_message nicht zum Absturz bringt, sondern None liefert. | grün | nie geprüft |
|
||||
| `GetMessageBarTests.test_liefert_objekt_mit_pushmessage_methode` | Prüft, dass _get_message_bar ein Objekt mit aufrufbarer pushMessage()-Methode liefert. | grün | geprüft am 2026-09-23 |
|
||||
| `GetMessageBarTests.test_faellt_bei_fehlerhaftem_iface_auf_mock_bar_zurueck` | Prüft, dass ein Fehler beim Zugriff auf iface.messageBar() auf eine funktionierende Mock-MessageBar zurückfällt. | grün | geprüft am 2026-09-23 |
|
||||
| `PushMessageTests.test_liefert_dict_mit_titel_text_level_und_dauer` | Prüft, dass push_message im Mock-Modus ein Dict mit den übergebenen Werten liefert. | grün | geprüft am 2026-09-23 |
|
||||
| `PushMessageTests.test_fehler_in_der_message_bar_wird_abgefangen` | Prüft, dass eine fehlschlagende MessageBar push_message nicht zum Absturz bringt, sondern None liefert. | grün | geprüft am 2026-09-23 |
|
||||
| `MeldungsstufenTests.test_info_warning_error_success_setzen_die_passende_meldungsstufe` | Prüft, dass info, warning, error und success jeweils ihre eigene Qgis.MessageLevel-Stufe setzen und Titel, Text und Dauer weiterreichen. | grün | geprüft am 2026-09-23 |
|
||||
|
||||
### `Plugin_SN_Basis/tests/test_navigation.py`
|
||||
|
||||
@@ -1267,7 +1269,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 344 Testfällen ohne Beschreibung
|
||||
### `sn_basis` – 0 von 345 Testfällen ohne Beschreibung
|
||||
|
||||
Keine Lücken.
|
||||
|
||||
@@ -1473,7 +1475,7 @@ Keine Lücken.
|
||||
Heuristik, kein Beweis: Diese Funktionen und Methoden kommen unter ihrem Namen in keiner Testdatei des Pakets vor. Das schließt nicht aus, dass sie indirekt über eine andere, getestete Funktion mitlaufen – umgekehrt gilt: Taucht der Name irgendwo in einer Testdatei auf, gilt die Funktion schon als referenziert, auch bei zufälliger Namensgleichheit mit etwas anderem. `main.py`/`__init__.py` (QGIS-Einstiegspunkte wie `classFactory`, `initGui`, `unload`) und Dunder-Methoden sind ausgenommen. Diese Liste ersetzt keine fachliche Prüfung, ob ein Test sinnvoll wäre – dafür braucht es einen Menschen, der die Funktion kennt.
|
||||
„beabsichtigt“ liest den Docstring der Funktion: Enthält er einen Vermerk wie „von Test abgesehen, weil …“ oder „Test ausgesetzt, zunächst Refactor“, gilt der fehlende Test als bewusste Entscheidung. Alles andere ist „ungeklärt“ – die eigentliche Arbeitsliste.
|
||||
|
||||
### `sn_basis` – 72 von 229 (31 %) ohne Testbezug (0 ungeklärt, 72 beabsichtigt)
|
||||
### `sn_basis` – 70 von 229 (31 %) ohne Testbezug (0 ungeklärt, 70 beabsichtigt)
|
||||
|
||||
#### `functions/dialog_wrapper.py` (9)
|
||||
|
||||
@@ -1487,11 +1489,6 @@ Heuristik, kein Beweis: Diese Funktionen und Methoden kommen unter ihrem Namen i
|
||||
- `ProgressDialog.raise_to_front` (Zeile 389) — **beabsichtigt:** von Test abgesehen, weil vernachlässigbar; HD 18.09.2026
|
||||
- `create_progress_dialog` (Zeile 408) — **beabsichtigt:** von Test abgesehen, weil vernachlässigbar; HD 18.09.2026
|
||||
|
||||
#### `functions/message_wrapper.py` (2)
|
||||
|
||||
- `info` (Zeile 67) — **beabsichtigt:** von Test abgesehen, weil vernachlässigbar; HD 18.09.2026
|
||||
- `success` (Zeile 84) — **beabsichtigt:** von Test abgesehen, weil vernachlässigbar; HD 18.09.2026
|
||||
|
||||
#### `functions/os_wrapper.py` (5)
|
||||
|
||||
- `normalize_path` (Zeile 43) — **beabsichtigt:** von Test abgesehen, weil vernachlässigbar; HD 18.09.2026
|
||||
|
||||
Reference in New Issue
Block a user