Tests: FuseGroup charge/discharge_limit charakterisieren
tsk-1kt7ze9wt0zj open
Ziel: custom_components/zendure_ha/fusegroup.py (FuseGroup.charge_limit / discharge_limit) hat keine Tests. Diese Logik verteilt die Leistungsgrenze einer Sicherungsgruppe auf mehrere Geräte und ist damit sicherheitsrelevant.
Aufgabe:
- Charakterisierungstests in
tests/test_fusegroup.py, im Stil vontests/test_number_clamp.pyund mit den Fixtures austests/conftest.py. Sie halten das heutige Verhalten fest:
- ein Gerät: Grenze =
min(maxpower, discharge_limit)bzw.max(minpower, charge_limit) - mehrere Geräte: Aufteilung nach Ladestand, Gerät ohne Leistung wird übersprungen,
initPowerrechnet nur einmal - Randfälle:
weight == 0, alle Geräte ohne Leistung, Summe der Zuteilungen gegenmaxpower/minpower
- Auffälligkeiten nicht fixen, sondern melden. Beim Lesen fiel mir auf (ungeprüft, bitte belegen oder widerlegen):
charge_limitnutztweight < 0,discharge_limitnutztweight > 0. Ist das wegen negativer Ladewerte gewollt?- Die Klammerung
max(avail - limit, avail)/min(avail - limit, avail)und die Docstrings („discharge“ beicharge_limit).
Für jeden echten Fehler einen Test mit pytest.mark.xfail(strict=True, reason=...) anlegen, der das korrekte Verhalten beschreibt.
pytest --verboselokal grün (xfails erlaubt), Exit-Code in den Report.
Grenzen:
- Nur lokaler Branch in deinem Clone von
Zendure/Zendure-HA. Kein Push, kein PR, keine GitHub-Kommentare ohne Wolfgangs Freigabe. - Kein Produktionscode ändern auf dieser Karte.
- Commits ohne
Co-Authored-By-Trailer (Upstream-CLAUDE.md).
Report per maity report: Branch, Commit, Testliste, Befund zu jeder Auffälligkeit (bestätigt/widerlegt mit Beleg), pytest-Ausgabe. Guthaben schonen: Denktiefe high, nicht maximal.