Test-Audit sn_basis fortgesetzt: settings_tab.py fachlich geprüft (#76)

9 Testfälle nach Freigabe als geprüft markiert: test_settings_tab.py komplett
(8 bestehende, davon 1 geschärft und 1 mit präzisiertem Docstring, und 1 neuer für den
Platzhalter im Landkreis-Dropdown). Nebenbefund (Landkreis wird über den Namen statt über
die Kennzahl geladen) nur im Commit von Plugin_SN_Basis vermerkt, ohne Issue.

Testkatalog neu erzeugt.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-26 20:18:58 +01:00
co-authored by Claude Opus 5.5
parent 8563a95ded
commit c7ecd14d64
3 changed files with 74 additions and 35 deletions
+36
View File
@@ -1007,6 +1007,42 @@
"datum": "2026-09-17", "datum": "2026-09-17",
"hash": "96f217d347c2" "hash": "96f217d347c2"
}, },
"sn_basis.tests.test_settings_tab.BuildInputTests.test_anderes_feld_liefert_lineedit": {
"datum": "2026-10-26",
"hash": "4b1c7d81b589"
},
"sn_basis.tests.test_settings_tab.BuildInputTests.test_landkreis_feld_liefert_combobox_mit_allen_landkreisen": {
"datum": "2026-10-26",
"hash": "bae09ab146d7"
},
"sn_basis.tests.test_settings_tab.LoadDataTests.test_befuellt_textfelder_aus_gespeicherten_daten": {
"datum": "2026-10-26",
"hash": "7a4a7b3d28ad"
},
"sn_basis.tests.test_settings_tab.LoadDataTests.test_ohne_gespeicherten_wert_bleibt_textfeld_leer": {
"datum": "2026-10-26",
"hash": "9143a4eccd59"
},
"sn_basis.tests.test_settings_tab.LoadDataTests.test_unbekannter_gespeicherter_name_waehlt_ersten_eintrag": {
"datum": "2026-10-26",
"hash": "4ef8fdcf26c5"
},
"sn_basis.tests.test_settings_tab.LoadDataTests.test_waehlt_combobox_eintrag_bei_bekanntem_namen": {
"datum": "2026-10-26",
"hash": "9e9665319784"
},
"sn_basis.tests.test_settings_tab.SaveDataTests.test_ohne_landkreis_dropdown_wird_keine_kennzahl_ergaenzt": {
"datum": "2026-10-26",
"hash": "78be1d93dfb4"
},
"sn_basis.tests.test_settings_tab.SaveDataTests.test_platzhalter_speichert_leere_kennzahl_statt_none": {
"datum": "2026-10-26",
"hash": "7885b0af38f4"
},
"sn_basis.tests.test_settings_tab.SaveDataTests.test_sammelt_text_und_combobox_werte_inklusive_landkreiskennzahl": {
"datum": "2026-10-26",
"hash": "7ac4e48333d5"
},
"sn_basis.tests.test_stilpruefer.TestStilpruefer.test_datei_existiert_falsche_endung": { "sn_basis.tests.test_stilpruefer.TestStilpruefer.test_datei_existiert_falsche_endung": {
"datum": "2026-09-17", "datum": "2026-09-17",
"hash": "37de9cd7e14c" "hash": "37de9cd7e14c"
+20 -18
View File
@@ -123,24 +123,24 @@
<div class="topbar"><div class="brand"><h1>Prüfstand</h1> <div class="topbar"><div class="brand"><h1>Prüfstand</h1>
<span class="tagline">Testkatalog der sn_*-Plugins — was die Suite heute prüft, auf einen Blick.</span></div> <span class="tagline">Testkatalog der sn_*-Plugins — was die Suite heute prüft, auf einen Blick.</span></div>
<div class="meta-line">Quelle: <b>docs/tests/testkatalog.md</b><br>Baseline: <span class="mono">docs/status/testbaseline.json</span> (SHA-256 aeabc946a7f3)<br>Prüf-Audit: <span class="mono">docs/status/testpruefungen.json</span> (SHA-256 7df562788eb6)</div></div> <div class="meta-line">Quelle: <b>docs/tests/testkatalog.md</b><br>Baseline: <span class="mono">docs/status/testbaseline.json</span> (SHA-256 aeabc946a7f3)<br>Prüf-Audit: <span class="mono">docs/status/testpruefungen.json</span> (SHA-256 119f79e142a0)</div></div>
<div class="summary"> <div class="summary">
<div class="stat"><span class="n">690</span><span class="l">Testfälle</span></div> <div class="stat"><span class="n">691</span><span class="l">Testfälle</span></div>
<div class="stat ok"><span class="n">647</span><span class="l">grün</span></div> <div class="stat ok"><span class="n">648</span><span class="l">grün</span></div>
<div class="stat warn"><span class="n">35</span><span class="l">rot (Baseline)</span></div> <div class="stat warn"><span class="n">35</span><span class="l">rot (Baseline)</span></div>
<div class="stat skip"><span class="n">8</span><span class="l">übersprungen</span></div> <div class="stat skip"><span class="n">8</span><span class="l">übersprungen</span></div>
<div class="stat"><span class="n">79%</span><span class="l">mit Docstring</span></div> <div class="stat"><span class="n">79%</span><span class="l">mit Docstring</span></div>
<div class="stat"><span class="n">37%</span><span class="l">aktuell geprüft</span></div> <div class="stat"><span class="n">38%</span><span class="l">aktuell geprüft</span></div>
<div class="stat"><span class="n">55</span><span class="l">Testdateien</span></div> <div class="stat"><span class="n">55</span><span class="l">Testdateien</span></div>
<div class="stat warn"><span class="n">34%</span><span class="l">ohne Testbezug</span></div> <div class="stat warn"><span class="n">34%</span><span class="l">ohne Testbezug</span></div>
</div> </div>
<div class="pkg-bars"><div class="pkg-bars-title">Verteilung je Paket</div> <div class="pkg-bars"><div class="pkg-bars-title">Verteilung je Paket</div>
<div class="pkg-bar-row"><span class="name">sn_basis</span><span class="minibar" role="img" aria-label="357 grün, 0 rot, 0 übersprungen"><span class="seg seg-ok" style="width:100%"></span><span class="seg seg-warn" style="width:0%"></span><span class="seg seg-skip" style="width:0%"></span></span><span class="count">32 Dateien · 357 Testfälle</span></div> <div class="pkg-bar-row"><span class="name">sn_basis</span><span class="minibar" role="img" aria-label="358 grün, 0 rot, 0 übersprungen"><span class="seg seg-ok" style="width:100%"></span><span class="seg seg-warn" style="width:0%"></span><span class="seg seg-skip" style="width:0%"></span></span><span class="count">32 Dateien · 358 Testfälle</span></div>
<div class="pkg-bar-row"><span class="name">sn_verfahrensgebiet</span><span class="minibar" role="img" aria-label="247 grün, 34 rot, 8 übersprungen"><span class="seg seg-ok" style="width:85%"></span><span class="seg seg-warn" style="width:12%"></span><span class="seg seg-skip" style="width:3%"></span></span><span class="count">18 Dateien · 289 Testfälle</span></div> <div class="pkg-bar-row"><span class="name">sn_verfahrensgebiet</span><span class="minibar" role="img" aria-label="247 grün, 34 rot, 8 übersprungen"><span class="seg seg-ok" style="width:85%"></span><span class="seg seg-warn" style="width:12%"></span><span class="seg seg-skip" style="width:3%"></span></span><span class="count">18 Dateien · 289 Testfälle</span></div>
<div class="pkg-bar-row"><span class="name">sn_plan41</span><span class="minibar" role="img" aria-label="43 grün, 1 rot, 0 übersprungen"><span class="seg seg-ok" style="width:98%"></span><span class="seg seg-warn" style="width:2%"></span><span class="seg seg-skip" style="width:0%"></span></span><span class="count">5 Dateien · 44 Testfälle</span></div> <div class="pkg-bar-row"><span class="name">sn_plan41</span><span class="minibar" role="img" aria-label="43 grün, 1 rot, 0 übersprungen"><span class="seg seg-ok" style="width:98%"></span><span class="seg seg-warn" style="width:2%"></span><span class="seg seg-skip" style="width:0%"></span></span><span class="count">5 Dateien · 44 Testfälle</span></div>
</div> </div>
<div class="controls"><nav class="nav-links"> <div class="controls"><nav class="nav-links">
<a href="#pkg-sn_basis">sn_basis <span class="mono">(357)</span></a> <a href="#pkg-sn_basis">sn_basis <span class="mono">(358)</span></a>
<a href="#pkg-sn_verfahrensgebiet">sn_verfahrensgebiet <span class="mono">(289)</span></a> <a href="#pkg-sn_verfahrensgebiet">sn_verfahrensgebiet <span class="mono">(289)</span></a>
<a href="#pkg-sn_plan41">sn_plan41 <span class="mono">(44)</span></a> <a href="#pkg-sn_plan41">sn_plan41 <span class="mono">(44)</span></a>
</nav><div class="filters"> </nav><div class="filters">
@@ -159,11 +159,11 @@
<h2>sn_basis</h2> <h2>sn_basis</h2>
<p class="pkg-sub">Plattform-Plugin · Ordner <span class="mono">Plugin_SN_Basis</span></p> <p class="pkg-sub">Plattform-Plugin · Ordner <span class="mono">Plugin_SN_Basis</span></p>
</div> </div>
<div class="pkg-bar" role="img" aria-label="357 grün, 0 rot, 0 übersprungen"> <div class="pkg-bar" role="img" aria-label="358 grün, 0 rot, 0 übersprungen">
<span class="seg seg-ok" style="width:100%"></span><span class="seg seg-warn" style="width:0%"></span><span class="seg seg-skip" style="width:0%"></span> <span class="seg seg-ok" style="width:100%"></span><span class="seg seg-warn" style="width:0%"></span><span class="seg seg-skip" style="width:0%"></span>
</div> </div>
</div> </div>
<div class="pkg-summary"><div class="stat stat-sm"><span class="n">32</span><span class="l">Testdateien</span></div><div class="stat stat-sm"><span class="n">357</span><span class="l">Testfälle</span></div><div class="stat stat-sm ok"><span class="n">357</span><span class="l">grün</span></div><div class="stat stat-sm warn"><span class="n">0</span><span class="l">rot (Baseline)</span></div><div class="stat stat-sm skip"><span class="n">0</span><span class="l">übersprungen</span></div><div class="stat stat-sm"><span class="n">100%</span><span class="l">mit Docstring</span></div><div class="stat stat-sm"><span class="n">72%</span><span class="l">geprüft</span></div><div class="stat stat-sm"><span class="n">70</span><span class="l">ohne Testbezug</span></div></div> <div class="pkg-summary"><div class="stat stat-sm"><span class="n">32</span><span class="l">Testdateien</span></div><div class="stat stat-sm"><span class="n">358</span><span class="l">Testfälle</span></div><div class="stat stat-sm ok"><span class="n">358</span><span class="l">grün</span></div><div class="stat stat-sm warn"><span class="n">0</span><span class="l">rot (Baseline)</span></div><div class="stat stat-sm skip"><span class="n">0</span><span class="l">übersprungen</span></div><div class="stat stat-sm"><span class="n">100%</span><span class="l">mit Docstring</span></div><div class="stat stat-sm"><span class="n">74%</span><span class="l">geprüft</span></div><div class="stat stat-sm"><span class="n">70</span><span class="l">ohne Testbezug</span></div></div>
<div class="card-grid"><article class="filecard" data-search="plugin_sn_basis/tests/test_base_dockwidget.py closeeventtests test_ruft_cleanup_aller_tabs_auf closeeventtests test_ignoriert_tabs_ohne_cleanup closeeventtests test_fehler_in_cleanup_wird_abgefangen_und_andere_tabs_laufen_weiter closeeventtests test_setzt_toolbar_action_zurueck closeeventtests test_ohne_action_wird_nichts_zurueckgesetzt" data-hasred="0" data-hasskip="0" data-nodoc="0" data-ungeprueft="0" data-veraltet="0"><button class="card-toggle" data-target="plugin-sn-basis-tests-test-base-dockwidget-py" aria-expanded="false"><span class="card-path mono">Plugin_SN_Basis/tests/test_base_dockwidget.py</span><span class="card-meta"><span class="count-total">5 Testfälle</span><span class="cpill cpill-ok">5</span><span class="docbadge" title="Anteil mit Docstring">100% beschrieben</span><span class="auditbadge" title="Anteil fachlich aktuell geprüft">100% geprüft</span><span class="chev" aria-hidden="true">▾</span></span></button><div class="card-body" id="body-plugin-sn-basis-tests-test-base-dockwidget-py"><p class="filedesc">Tests für sn_basis/ui/base_dockwidget.py::closeEvent (Issue #65).</p><div class="gchips"><span class="gchip" title="">CloseEventTests <b>5</b></span></div><div class="diagram-wrap"><pre class="mermaid">flowchart TD <div class="card-grid"><article class="filecard" data-search="plugin_sn_basis/tests/test_base_dockwidget.py closeeventtests test_ruft_cleanup_aller_tabs_auf closeeventtests test_ignoriert_tabs_ohne_cleanup closeeventtests test_fehler_in_cleanup_wird_abgefangen_und_andere_tabs_laufen_weiter closeeventtests test_setzt_toolbar_action_zurueck closeeventtests test_ohne_action_wird_nichts_zurueckgesetzt" data-hasred="0" data-hasskip="0" data-nodoc="0" data-ungeprueft="0" data-veraltet="0"><button class="card-toggle" data-target="plugin-sn-basis-tests-test-base-dockwidget-py" aria-expanded="false"><span class="card-path mono">Plugin_SN_Basis/tests/test_base_dockwidget.py</span><span class="card-meta"><span class="count-total">5 Testfälle</span><span class="cpill cpill-ok">5</span><span class="docbadge" title="Anteil mit Docstring">100% beschrieben</span><span class="auditbadge" title="Anteil fachlich aktuell geprüft">100% geprüft</span><span class="chev" aria-hidden="true">▾</span></span></button><div class="card-body" id="body-plugin-sn-basis-tests-test-base-dockwidget-py"><p class="filedesc">Tests für sn_basis/ui/base_dockwidget.py::closeEvent (Issue #65).</p><div class="gchips"><span class="gchip" title="">CloseEventTests <b>5</b></span></div><div class="diagram-wrap"><pre class="mermaid">flowchart TD
root([&quot;test_base_dockwidget.py&quot;]) root([&quot;test_base_dockwidget.py&quot;])
class root rootnode class root rootnode
@@ -1105,23 +1105,24 @@
classDef groupnode fill:#cfe0da,stroke:#5c8a7d,stroke-width:1px,color:#152420; classDef groupnode fill:#cfe0da,stroke:#5c8a7d,stroke-width:1px,color:#152420;
classDef ok fill:#dcefdc,stroke:#3f7d4a,stroke-width:1px,color:#1c3a20; classDef ok fill:#dcefdc,stroke:#3f7d4a,stroke-width:1px,color:#1c3a20;
classDef warn fill:#f6ead9,stroke:#b5722a,stroke-width:1px,color:#4a2c08; classDef warn fill:#f6ead9,stroke:#b5722a,stroke-width:1px,color:#4a2c08;
classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;</pre></div><table class="test-table"><thead><tr><th>Testfall</th><th>prüft</th><th>Status</th><th>geprüft</th></tr></thead><tbody><tr><td class="mono">TestSettingsLogic<br><span class="testname">test_load</span></td><td>Prüft, dass load() jede bekannte Projektvariable genau einmal über get_variable() liest.</td><td><span class="pill pill-ok">grün</span></td><td><span class="pill pill-pr-ok">geprüft am 2026-09-17</span></td></tr><tr><td class="mono">TestSettingsLogic<br><span class="testname">test_save</span></td><td>Prüft, dass save() nur bekannte Variablen-Keys speichert und unbekannte Keys ignoriert.</td><td><span class="pill pill-ok">grün</span></td><td><span class="pill pill-pr-ok">geprüft am 2026-09-17</span></td></tr><tr><td class="mono">TestSettingsLogic<br><span class="testname">test_load_handles_partial_values_with_empty_fallback</span></td><td>Prüft, dass load() für jede Variable den (auch leeren) Wert von get_variable() unverändert übernimmt, selbst wenn nicht alle Variablen im Mock konfiguriert sind.</td><td><span class="pill pill-ok">grün</span></td><td><span class="pill pill-pr-ok">geprüft am 2026-09-17</span></td></tr><tr><td class="mono">TestSettingsLogic<br><span class="testname">test_save_empty_string_value_is_persisted</span></td><td>Prüft, dass save() einen leeren String als gültigen Wert speichert, statt ihn wie einen fehlenden Key zu behandeln.</td><td><span class="pill pill-ok">grün</span></td><td><span class="pill pill-pr-ok">geprüft am 2026-09-17</span></td></tr></tbody></table></div></article><article class="filecard" data-search="plugin_sn_basis/tests/test_settings_tab.py savedatatests test_sammelt_text_und_combobox_werte_inklusive_landkreiskennzahl savedatatests test_ohne_landkreis_dropdown_wird_keine_kennzahl_ergaenzt loaddatatests test_befuellt_textfelder_aus_gespeicherten_daten loaddatatests test_ohne_gespeicherten_wert_bleibt_textfeld_leer loaddatatests test_waehlt_combobox_eintrag_bei_bekanntem_namen loaddatatests test_unbekannter_gespeicherter_name_waehlt_ersten_eintrag buildinputtests test_landkreis_feld_liefert_combobox_mit_allen_landkreisen buildinputtests test_anderes_feld_liefert_lineedit" data-hasred="0" data-hasskip="0" data-nodoc="0" data-ungeprueft="1" data-veraltet="0"><button class="card-toggle" data-target="plugin-sn-basis-tests-test-settings-tab-py" aria-expanded="false"><span class="card-path mono">Plugin_SN_Basis/tests/test_settings_tab.py</span><span class="card-meta"><span class="count-total">8 Testfälle</span><span class="cpill cpill-ok">8</span><span class="docbadge" title="Anteil mit Docstring">100% beschrieben</span><span class="auditbadge" title="Anteil fachlich aktuell geprüft">0% geprüft</span><span class="chev" aria-hidden="true">▾</span></span></button><div class="card-body" id="body-plugin-sn-basis-tests-test-settings-tab-py"><p class="filedesc">Tests für sn_basis/ui/tabs/settings_tab.py::save_data/load_data/_build_input (Issue #65/#67).</p><div class="gchips"><span class="gchip" title="">SaveDataTests <b>2</b></span><span class="gchip" title="">LoadDataTests <b>4</b></span><span class="gchip" title="">BuildInputTests <b>2</b></span></div><div class="diagram-wrap"><pre class="mermaid">flowchart TD classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;</pre></div><table class="test-table"><thead><tr><th>Testfall</th><th>prüft</th><th>Status</th><th>geprüft</th></tr></thead><tbody><tr><td class="mono">TestSettingsLogic<br><span class="testname">test_load</span></td><td>Prüft, dass load() jede bekannte Projektvariable genau einmal über get_variable() liest.</td><td><span class="pill pill-ok">grün</span></td><td><span class="pill pill-pr-ok">geprüft am 2026-09-17</span></td></tr><tr><td class="mono">TestSettingsLogic<br><span class="testname">test_save</span></td><td>Prüft, dass save() nur bekannte Variablen-Keys speichert und unbekannte Keys ignoriert.</td><td><span class="pill pill-ok">grün</span></td><td><span class="pill pill-pr-ok">geprüft am 2026-09-17</span></td></tr><tr><td class="mono">TestSettingsLogic<br><span class="testname">test_load_handles_partial_values_with_empty_fallback</span></td><td>Prüft, dass load() für jede Variable den (auch leeren) Wert von get_variable() unverändert übernimmt, selbst wenn nicht alle Variablen im Mock konfiguriert sind.</td><td><span class="pill pill-ok">grün</span></td><td><span class="pill pill-pr-ok">geprüft am 2026-09-17</span></td></tr><tr><td class="mono">TestSettingsLogic<br><span class="testname">test_save_empty_string_value_is_persisted</span></td><td>Prüft, dass save() einen leeren String als gültigen Wert speichert, statt ihn wie einen fehlenden Key zu behandeln.</td><td><span class="pill pill-ok">grün</span></td><td><span class="pill pill-pr-ok">geprüft am 2026-09-17</span></td></tr></tbody></table></div></article><article class="filecard" data-search="plugin_sn_basis/tests/test_settings_tab.py savedatatests test_sammelt_text_und_combobox_werte_inklusive_landkreiskennzahl savedatatests test_platzhalter_speichert_leere_kennzahl_statt_none savedatatests test_ohne_landkreis_dropdown_wird_keine_kennzahl_ergaenzt loaddatatests test_befuellt_textfelder_aus_gespeicherten_daten loaddatatests test_ohne_gespeicherten_wert_bleibt_textfeld_leer loaddatatests test_waehlt_combobox_eintrag_bei_bekanntem_namen loaddatatests test_unbekannter_gespeicherter_name_waehlt_ersten_eintrag buildinputtests test_landkreis_feld_liefert_combobox_mit_allen_landkreisen buildinputtests test_anderes_feld_liefert_lineedit" data-hasred="0" data-hasskip="0" data-nodoc="0" data-ungeprueft="0" data-veraltet="0"><button class="card-toggle" data-target="plugin-sn-basis-tests-test-settings-tab-py" aria-expanded="false"><span class="card-path mono">Plugin_SN_Basis/tests/test_settings_tab.py</span><span class="card-meta"><span class="count-total">9 Testfälle</span><span class="cpill cpill-ok">9</span><span class="docbadge" title="Anteil mit Docstring">100% beschrieben</span><span class="auditbadge" title="Anteil fachlich aktuell geprüft">100% geprüft</span><span class="chev" aria-hidden="true">▾</span></span></button><div class="card-body" id="body-plugin-sn-basis-tests-test-settings-tab-py"><p class="filedesc">Tests für sn_basis/ui/tabs/settings_tab.py::save_data/load_data/_build_input (Issue #65/#67).</p><div class="gchips"><span class="gchip" title="">SaveDataTests <b>3</b></span><span class="gchip" title="">LoadDataTests <b>4</b></span><span class="gchip" title="">BuildInputTests <b>2</b></span></div><div class="diagram-wrap"><pre class="mermaid">flowchart TD
root([&quot;test_settings_tab.py&quot;]) root([&quot;test_settings_tab.py&quot;])
class root rootnode class root rootnode
root --&gt; g1[&quot;SaveDataTests (2)&quot;] root --&gt; g1[&quot;SaveDataTests (3)&quot;]
class g1 groupnode class g1 groupnode
g1 --&gt; t1(&quot;sammelt_text_und_combobox_werte_inklusive_landkreiskennzahl&quot;) g1 --&gt; t1(&quot;sammelt_text_und_combobox_werte_inklusive_landkreiskennzahl&quot;)
g1 --&gt; t2(&quot;ohne_landkreis_dropdown_wird_keine_kennzahl_ergaenzt&quot;) g1 --&gt; t2(&quot;platzhalter_speichert_leere_kennzahl_statt_none&quot;)
g1 --&gt; t3(&quot;ohne_landkreis_dropdown_wird_keine_kennzahl_ergaenzt&quot;)
root --&gt; g2[&quot;LoadDataTests (4)&quot;] root --&gt; g2[&quot;LoadDataTests (4)&quot;]
class g2 groupnode class g2 groupnode
g2 --&gt; t3(&quot;befuellt_textfelder_aus_gespeicherten_daten&quot;) g2 --&gt; t4(&quot;befuellt_textfelder_aus_gespeicherten_daten&quot;)
g2 --&gt; t4(&quot;ohne_gespeicherten_wert_bleibt_textfeld_leer&quot;) g2 --&gt; t5(&quot;ohne_gespeicherten_wert_bleibt_textfeld_leer&quot;)
g2 --&gt; t5(&quot;waehlt_combobox_eintrag_bei_bekanntem_namen&quot;) g2 --&gt; t6(&quot;waehlt_combobox_eintrag_bei_bekanntem_namen&quot;)
g2 --&gt; t6(&quot;unbekannter_gespeicherter_name_waehlt_ersten_eintrag&quot;) g2 --&gt; t7(&quot;unbekannter_gespeicherter_name_waehlt_ersten_eintrag&quot;)
root --&gt; g3[&quot;BuildInputTests (2)&quot;] root --&gt; g3[&quot;BuildInputTests (2)&quot;]
class g3 groupnode class g3 groupnode
g3 --&gt; t7(&quot;landkreis_feld_liefert_combobox_mit_allen_landkreisen&quot;) g3 --&gt; t8(&quot;landkreis_feld_liefert_combobox_mit_allen_landkreisen&quot;)
g3 --&gt; t8(&quot;anderes_feld_liefert_lineedit&quot;) g3 --&gt; t9(&quot;anderes_feld_liefert_lineedit&quot;)
class t1 ok class t1 ok
class t2 ok class t2 ok
class t3 ok class t3 ok
@@ -1130,11 +1131,12 @@
class t6 ok class t6 ok
class t7 ok class t7 ok
class t8 ok class t8 ok
class t9 ok
classDef rootnode fill:#1f4038,stroke:#16302a,stroke-width:1px,color:#f4f1e8,font-weight:600; classDef rootnode fill:#1f4038,stroke:#16302a,stroke-width:1px,color:#f4f1e8,font-weight:600;
classDef groupnode fill:#cfe0da,stroke:#5c8a7d,stroke-width:1px,color:#152420; classDef groupnode fill:#cfe0da,stroke:#5c8a7d,stroke-width:1px,color:#152420;
classDef ok fill:#dcefdc,stroke:#3f7d4a,stroke-width:1px,color:#1c3a20; classDef ok fill:#dcefdc,stroke:#3f7d4a,stroke-width:1px,color:#1c3a20;
classDef warn fill:#f6ead9,stroke:#b5722a,stroke-width:1px,color:#4a2c08; classDef warn fill:#f6ead9,stroke:#b5722a,stroke-width:1px,color:#4a2c08;
classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;</pre></div><table class="test-table"><thead><tr><th>Testfall</th><th>prüft</th><th>Status</th><th>geprüft</th></tr></thead><tbody><tr><td class="mono">SaveDataTests<br><span class="testname">test_sammelt_text_und_combobox_werte_inklusive_landkreiskennzahl</span></td><td>Prüft, dass save_data Text- und Dropdown-Werte sammelt und die Landkreiskennzahl separat ergänzt.</td><td><span class="pill pill-ok">grün</span></td><td><span class="pill pill-pr-skip">nie geprüft</span></td></tr><tr><td class="mono">SaveDataTests<br><span class="testname">test_ohne_landkreis_dropdown_wird_keine_kennzahl_ergaenzt</span></td><td>Prüft, dass ohne Landkreis-Dropdown im Formular keine &#x27;landkreis_kennzahl&#x27; ergänzt wird.</td><td><span class="pill pill-ok">grün</span></td><td><span class="pill pill-pr-skip">nie geprüft</span></td></tr><tr><td class="mono">LoadDataTests<br><span class="testname">test_befuellt_textfelder_aus_gespeicherten_daten</span></td><td>Prüft, dass load_data ein Textfeld mit dem gespeicherten Wert befüllt.</td><td><span class="pill pill-ok">grün</span></td><td><span class="pill pill-pr-skip">nie geprüft</span></td></tr><tr><td class="mono">LoadDataTests<br><span class="testname">test_ohne_gespeicherten_wert_bleibt_textfeld_leer</span></td><td>Prüft, dass load_data ohne gespeicherten Wert das Textfeld auf einen leeren Text setzt.</td><td><span class="pill pill-ok">grün</span></td><td><span class="pill pill-pr-skip">nie geprüft</span></td></tr><tr><td class="mono">LoadDataTests<br><span class="testname">test_waehlt_combobox_eintrag_bei_bekanntem_namen</span></td><td>Prüft, dass load_data im Landkreis-Dropdown den gespeicherten Landkreisnamen auswählt.</td><td><span class="pill pill-ok">grün</span></td><td><span class="pill pill-pr-skip">nie geprüft</span></td></tr><tr><td class="mono">LoadDataTests<br><span class="testname">test_unbekannter_gespeicherter_name_waehlt_ersten_eintrag</span></td><td>Prüft, dass load_data bei einem nicht mehr vorhandenen Landkreisnamen auf den ersten Eintrag zurückfällt.</td><td><span class="pill pill-ok">grün</span></td><td><span class="pill pill-pr-skip">nie geprüft</span></td></tr><tr><td class="mono">BuildInputTests<br><span class="testname">test_landkreis_feld_liefert_combobox_mit_allen_landkreisen</span></td><td>Prüft, dass _build_input für das Landkreis-Feld eine ComboBox mit Platzhalter und allen Landkreisen liefert.</td><td><span class="pill pill-ok">grün</span></td><td><span class="pill pill-pr-skip">nie geprüft</span></td></tr><tr><td class="mono">BuildInputTests<br><span class="testname">test_anderes_feld_liefert_lineedit</span></td><td>Prüft, dass _build_input für ein normales Feld ein leeres Textfeld liefert.</td><td><span class="pill pill-ok">grün</span></td><td><span class="pill pill-pr-skip">nie geprüft</span></td></tr></tbody></table></div></article><article class="filecard" data-search="plugin_sn_basis/tests/test_stilpruefer.py teststilpruefer test_keine_datei_angegeben teststilpruefer test_datei_existiert_mit_qml teststilpruefer test_datei_existiert_falsche_endung teststilpruefer test_datei_existiert_nicht" data-hasred="0" data-hasskip="0" data-nodoc="0" data-ungeprueft="0" data-veraltet="0"><button class="card-toggle" data-target="plugin-sn-basis-tests-test-stilpruefer-py" aria-expanded="false"><span class="card-path mono">Plugin_SN_Basis/tests/test_stilpruefer.py</span><span class="card-meta"><span class="count-total">4 Testfälle</span><span class="cpill cpill-ok">4</span><span class="docbadge" title="Anteil mit Docstring">100% beschrieben</span><span class="auditbadge" title="Anteil fachlich aktuell geprüft">100% geprüft</span><span class="chev" aria-hidden="true">▾</span></span></button><div class="card-body" id="body-plugin-sn-basis-tests-test-stilpruefer-py"><p class="filedesc">— (Docstring fehlt)</p><div class="gchips"><span class="gchip" title="">TestStilpruefer <b>4</b></span></div><div class="diagram-wrap"><pre class="mermaid">flowchart TD classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;</pre></div><table class="test-table"><thead><tr><th>Testfall</th><th>prüft</th><th>Status</th><th>geprüft</th></tr></thead><tbody><tr><td class="mono">SaveDataTests<br><span class="testname">test_sammelt_text_und_combobox_werte_inklusive_landkreiskennzahl</span></td><td>Prüft, dass save_data Text- und Dropdown-Werte sammelt und die Landkreiskennzahl separat ergänzt.</td><td><span class="pill pill-ok">grün</span></td><td><span class="pill pill-pr-ok">geprüft am 2026-10-26</span></td></tr><tr><td class="mono">SaveDataTests<br><span class="testname">test_platzhalter_speichert_leere_kennzahl_statt_none</span></td><td>Prüft, dass bei ausgewähltem Platzhalter Landkreisname und Kennzahl als leerer Text gespeichert werden.</td><td><span class="pill pill-ok">grün</span></td><td><span class="pill pill-pr-ok">geprüft am 2026-10-26</span></td></tr><tr><td class="mono">SaveDataTests<br><span class="testname">test_ohne_landkreis_dropdown_wird_keine_kennzahl_ergaenzt</span></td><td>Prüft, dass ohne Landkreis-Dropdown im Formular keine &#x27;landkreis_kennzahl&#x27; ergänzt wird.</td><td><span class="pill pill-ok">grün</span></td><td><span class="pill pill-pr-ok">geprüft am 2026-10-26</span></td></tr><tr><td class="mono">LoadDataTests<br><span class="testname">test_befuellt_textfelder_aus_gespeicherten_daten</span></td><td>Prüft, dass load_data ein Textfeld mit dem gespeicherten Wert befüllt.</td><td><span class="pill pill-ok">grün</span></td><td><span class="pill pill-pr-ok">geprüft am 2026-10-26</span></td></tr><tr><td class="mono">LoadDataTests<br><span class="testname">test_ohne_gespeicherten_wert_bleibt_textfeld_leer</span></td><td>Prüft, dass load_data ohne gespeicherten Wert das Textfeld auf einen leeren Text setzt.</td><td><span class="pill pill-ok">grün</span></td><td><span class="pill pill-pr-ok">geprüft am 2026-10-26</span></td></tr><tr><td class="mono">LoadDataTests<br><span class="testname">test_waehlt_combobox_eintrag_bei_bekanntem_namen</span></td><td>Prüft, dass load_data im Landkreis-Dropdown den gespeicherten Landkreisnamen auswählt.</td><td><span class="pill pill-ok">grün</span></td><td><span class="pill pill-pr-ok">geprüft am 2026-10-26</span></td></tr><tr><td class="mono">LoadDataTests<br><span class="testname">test_unbekannter_gespeicherter_name_waehlt_ersten_eintrag</span></td><td>Prüft, dass load_data bei einem nicht mehr vorhandenen Landkreisnamen auf den leeren Platzhalter zurückfällt.</td><td><span class="pill pill-ok">grün</span></td><td><span class="pill pill-pr-ok">geprüft am 2026-10-26</span></td></tr><tr><td class="mono">BuildInputTests<br><span class="testname">test_landkreis_feld_liefert_combobox_mit_allen_landkreisen</span></td><td>Prüft, dass _build_input für das Landkreis-Feld eine ComboBox mit Platzhalter und allen Landkreisen liefert.</td><td><span class="pill pill-ok">grün</span></td><td><span class="pill pill-pr-ok">geprüft am 2026-10-26</span></td></tr><tr><td class="mono">BuildInputTests<br><span class="testname">test_anderes_feld_liefert_lineedit</span></td><td>Prüft, dass _build_input für ein normales Feld ein leeres Textfeld liefert.</td><td><span class="pill pill-ok">grün</span></td><td><span class="pill pill-pr-ok">geprüft am 2026-10-26</span></td></tr></tbody></table></div></article><article class="filecard" data-search="plugin_sn_basis/tests/test_stilpruefer.py teststilpruefer test_keine_datei_angegeben teststilpruefer test_datei_existiert_mit_qml teststilpruefer test_datei_existiert_falsche_endung teststilpruefer test_datei_existiert_nicht" data-hasred="0" data-hasskip="0" data-nodoc="0" data-ungeprueft="0" data-veraltet="0"><button class="card-toggle" data-target="plugin-sn-basis-tests-test-stilpruefer-py" aria-expanded="false"><span class="card-path mono">Plugin_SN_Basis/tests/test_stilpruefer.py</span><span class="card-meta"><span class="count-total">4 Testfälle</span><span class="cpill cpill-ok">4</span><span class="docbadge" title="Anteil mit Docstring">100% beschrieben</span><span class="auditbadge" title="Anteil fachlich aktuell geprüft">100% geprüft</span><span class="chev" aria-hidden="true">▾</span></span></button><div class="card-body" id="body-plugin-sn-basis-tests-test-stilpruefer-py"><p class="filedesc">— (Docstring fehlt)</p><div class="gchips"><span class="gchip" title="">TestStilpruefer <b>4</b></span></div><div class="diagram-wrap"><pre class="mermaid">flowchart TD
root([&quot;test_stilpruefer.py&quot;]) root([&quot;test_stilpruefer.py&quot;])
class root rootnode class root rootnode
root --&gt; g1[&quot;TestStilpruefer (4)&quot;] root --&gt; g1[&quot;TestStilpruefer (4)&quot;]
+18 -17
View File
@@ -8,21 +8,21 @@ für die fachliche Frage, ob die Abdeckung sinnvoll ist. Die Angaben stammen aus
selbst (Docstrings) und aus der Testbaseline. selbst (Docstrings) und aus der Testbaseline.
Stand der Baseline: `docs/status/testbaseline.json` (SHA-256 `aeabc946a7f3`) Stand der Baseline: `docs/status/testbaseline.json` (SHA-256 `aeabc946a7f3`)
Stand des Prüf-Audits: `docs/status/testpruefungen.json` (SHA-256 `7df562788eb6`) Stand des Prüf-Audits: `docs/status/testpruefungen.json` (SHA-256 `119f79e142a0`)
Gesamt: 3 Pakete, 55 Testdateien, 690 Testfälle – 647 grün, 35 rot (Baseline), 8 übersprungen. Gesamt: 3 Pakete, 55 Testdateien, 691 Testfälle – 648 grün, 35 rot (Baseline), 8 übersprungen.
Mit Beschreibung (Docstring): 545 von 690 (79 %). Mit Beschreibung (Docstring): 546 von 691 (79 %).
Fachlich geprüft: 257 von 690 (37 %) aktuell, 0 veraltet seit Codeänderung, 433 nie geprüft. Fachlich geprüft: 266 von 691 (38 %) aktuell, 0 veraltet seit Codeänderung, 425 nie geprüft.
Strukturelle Lücken (heuristisch, Namensabgleich): 160 von 470 (34 %) Funktionen/Methoden ohne erkennbaren Testbezug – Abschnitt „Ungetestete Funktionen“. Strukturelle Lücken (heuristisch, Namensabgleich): 160 von 470 (34 %) Funktionen/Methoden ohne erkennbaren Testbezug – Abschnitt „Ungetestete Funktionen“.
## Zusammenfassung ## Zusammenfassung
| Paket | Testdateien | Testfälle | grün | rot (Baseline) | übersprungen | mit Beschreibung | fachlich geprüft | ohne Testbezug | | Paket | Testdateien | Testfälle | grün | rot (Baseline) | übersprungen | mit Beschreibung | fachlich geprüft | ohne Testbezug |
| --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | | --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: |
| `sn_basis` | 32 | 357 | 357 | 0 | 0 | 357 von 357 (100 %) | 257 von 357 (72 %) | 70 von 229 (31 %) | | `sn_basis` | 32 | 358 | 358 | 0 | 0 | 358 von 358 (100 %) | 266 von 358 (74 %) | 70 von 229 (31 %) |
| `sn_verfahrensgebiet` | 18 | 289 | 247 | 34 | 8 | 187 von 289 (65 %) | 0 von 289 (0 %) | 51 von 161 (32 %) | | `sn_verfahrensgebiet` | 18 | 289 | 247 | 34 | 8 | 187 von 289 (65 %) | 0 von 289 (0 %) | 51 von 161 (32 %) |
| `sn_plan41` | 5 | 44 | 43 | 1 | 0 | 1 von 44 (2 %) | 0 von 44 (0 %) | 39 von 80 (49 %) | | `sn_plan41` | 5 | 44 | 43 | 1 | 0 | 1 von 44 (2 %) | 0 von 44 (0 %) | 39 von 80 (49 %) |
| **Summe** | **55** | **690** | **647** | **35** | **8** | **545 von 690 (79 %)** | **257 von 690 (37 %)** | **160 von 470 (34 %)** | | **Summe** | **55** | **691** | **648** | **35** | **8** | **546 von 691 (79 %)** | **266 von 691 (38 %)** | **160 von 470 (34 %)** |
### Legende ### Legende
@@ -36,7 +36,7 @@ Strukturelle Lücken (heuristisch, Namensabgleich): 160 von 470 (34 %) Funktione
## Paket `sn_basis` ## Paket `sn_basis`
Plattform-Plugin, Ordner `Plugin_SN_Basis` – 32 Testdateien mit 357 Testfällen (357 grün, 0 rot, 0 übersprungen). Plattform-Plugin, Ordner `Plugin_SN_Basis` – 32 Testdateien mit 358 Testfällen (358 grün, 0 rot, 0 übersprungen).
### `Plugin_SN_Basis/tests/test_base_dockwidget.py` ### `Plugin_SN_Basis/tests/test_base_dockwidget.py`
@@ -683,20 +683,21 @@ Worum es in der Datei geht: Tests für sn_basis/ui/tabs/settings_tab.py::save_da
Testgruppen: Testgruppen:
- `SaveDataTests` (2 Testfälle): — (Docstring fehlt) - `SaveDataTests` (3 Testfälle): — (Docstring fehlt)
- `LoadDataTests` (4 Testfälle): — (Docstring fehlt) - `LoadDataTests` (4 Testfälle): — (Docstring fehlt)
- `BuildInputTests` (2 Testfälle): — (Docstring fehlt) - `BuildInputTests` (2 Testfälle): — (Docstring fehlt)
| Testfall | prüft | Status | geprüft | | Testfall | prüft | Status | geprüft |
| --- | --- | --- | --- | | --- | --- | --- | --- |
| `SaveDataTests.test_sammelt_text_und_combobox_werte_inklusive_landkreiskennzahl` | Prüft, dass save_data Text- und Dropdown-Werte sammelt und die Landkreiskennzahl separat ergänzt. | grün | nie geprüft | | `SaveDataTests.test_sammelt_text_und_combobox_werte_inklusive_landkreiskennzahl` | Prüft, dass save_data Text- und Dropdown-Werte sammelt und die Landkreiskennzahl separat ergänzt. | grün | geprüft am 2026-10-26 |
| `SaveDataTests.test_ohne_landkreis_dropdown_wird_keine_kennzahl_ergaenzt` | Prüft, dass ohne Landkreis-Dropdown im Formular keine 'landkreis_kennzahl' ergänzt wird. | grün | nie geprüft | | `SaveDataTests.test_platzhalter_speichert_leere_kennzahl_statt_none` | Prüft, dass bei ausgewähltem Platzhalter Landkreisname und Kennzahl als leerer Text gespeichert werden. | grün | geprüft am 2026-10-26 |
| `LoadDataTests.test_befuellt_textfelder_aus_gespeicherten_daten` | Prüft, dass load_data ein Textfeld mit dem gespeicherten Wert befüllt. | grün | nie geprüft | | `SaveDataTests.test_ohne_landkreis_dropdown_wird_keine_kennzahl_ergaenzt` | Prüft, dass ohne Landkreis-Dropdown im Formular keine 'landkreis_kennzahl' ergänzt wird. | grün | geprüft am 2026-10-26 |
| `LoadDataTests.test_ohne_gespeicherten_wert_bleibt_textfeld_leer` | Prüft, dass load_data ohne gespeicherten Wert das Textfeld auf einen leeren Text setzt. | grün | nie geprüft | | `LoadDataTests.test_befuellt_textfelder_aus_gespeicherten_daten` | Prüft, dass load_data ein Textfeld mit dem gespeicherten Wert befüllt. | grün | geprüft am 2026-10-26 |
| `LoadDataTests.test_waehlt_combobox_eintrag_bei_bekanntem_namen` | Prüft, dass load_data im Landkreis-Dropdown den gespeicherten Landkreisnamen auswählt. | grün | nie geprüft | | `LoadDataTests.test_ohne_gespeicherten_wert_bleibt_textfeld_leer` | Prüft, dass load_data ohne gespeicherten Wert das Textfeld auf einen leeren Text setzt. | grün | geprüft am 2026-10-26 |
| `LoadDataTests.test_unbekannter_gespeicherter_name_waehlt_ersten_eintrag` | Prüft, dass load_data bei einem nicht mehr vorhandenen Landkreisnamen auf den ersten Eintrag zurückfällt. | grün | nie geprüft | | `LoadDataTests.test_waehlt_combobox_eintrag_bei_bekanntem_namen` | Prüft, dass load_data im Landkreis-Dropdown den gespeicherten Landkreisnamen auswählt. | grün | geprüft am 2026-10-26 |
| `BuildInputTests.test_landkreis_feld_liefert_combobox_mit_allen_landkreisen` | Prüft, dass _build_input für das Landkreis-Feld eine ComboBox mit Platzhalter und allen Landkreisen liefert. | grün | nie geprüft | | `LoadDataTests.test_unbekannter_gespeicherter_name_waehlt_ersten_eintrag` | Prüft, dass load_data bei einem nicht mehr vorhandenen Landkreisnamen auf den leeren Platzhalter zurückfällt. | grün | geprüft am 2026-10-26 |
| `BuildInputTests.test_anderes_feld_liefert_lineedit` | Prüft, dass _build_input für ein normales Feld ein leeres Textfeld liefert. | grün | nie geprüft | | `BuildInputTests.test_landkreis_feld_liefert_combobox_mit_allen_landkreisen` | Prüft, dass _build_input für das Landkreis-Feld eine ComboBox mit Platzhalter und allen Landkreisen liefert. | grün | geprüft am 2026-10-26 |
| `BuildInputTests.test_anderes_feld_liefert_lineedit` | Prüft, dass _build_input für ein normales Feld ein leeres Textfeld liefert. | grün | geprüft am 2026-10-26 |
### `Plugin_SN_Basis/tests/test_stilpruefer.py` ### `Plugin_SN_Basis/tests/test_stilpruefer.py`
@@ -1442,7 +1443,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, aus dem Quelltext erschließen. Jeder Eintrag braucht eine einzeilige Beschreibung im Testfall,
dann verschwindet er hier von selbst. dann verschwindet er hier von selbst.
### `sn_basis` – 0 von 357 Testfällen ohne Beschreibung ### `sn_basis` – 0 von 358 Testfällen ohne Beschreibung
Keine Lücken. Keine Lücken.