From 584ab225f1adee6658b59cda14591313d5125443 Mon Sep 17 00:00:00 2001 From: Andreas Date: Sun, 6 Oct 2024 14:04:26 +0200 Subject: [PATCH] Unittest includes Home Appliances --- tests/test_class_ems.py | 18 ++++++++++++++---- visualization_results.pdf | Bin 0 -> 46283 bytes 2 files changed, 14 insertions(+), 4 deletions(-) create mode 100644 visualization_results.pdf diff --git a/tests/test_class_ems.py b/tests/test_class_ems.py index f35f39a..dc37b1d 100644 --- a/tests/test_class_ems.py +++ b/tests/test_class_ems.py @@ -3,7 +3,7 @@ import pytest from modules.class_akku import PVAkku from modules.class_ems import EnergieManagementSystem from modules.class_inverter import Wechselrichter # Example import - +from modules.class_haushaltsgeraet import Haushaltsgeraet prediction_hours = 48 optimization_hours = 24 @@ -20,7 +20,12 @@ def create_ems_instance(): wechselrichter = Wechselrichter(10000, akku) # Household device (currently not used, set to None) - haushaltsgeraet = None + home_appliance = Haushaltsgeraet( + hours=prediction_hours, + verbrauch_kwh=2000, + dauer_h=2, + ).set_startzeitpunkt(2) + # Example initialization of electric car battery eauto = PVAkku(kapazitaet_wh=26400, start_soc_prozent=10, hours=48) @@ -188,7 +193,7 @@ def create_ems_instance(): einspeiseverguetung_euro_pro_wh=einspeiseverguetung_euro_pro_wh, eauto=eauto, gesamtlast=gesamtlast, - haushaltsgeraet=haushaltsgeraet, + haushaltsgeraet=home_appliance, wechselrichter=wechselrichter, ) return ems @@ -203,7 +208,7 @@ def test_simulation(create_ems_instance): # Simulate starting from hour 1 (this value can be adjusted) start_hour = 1 result = ems.simuliere(start_stunde=start_hour) - + # Assertions to validate results assert result is not None, "Result should not be None" assert isinstance(result, dict), "Result should be a dictionary" @@ -308,4 +313,9 @@ def test_simulation(create_ems_instance): result["akku_soc_pro_stunde"][1] == 0.0 ), "The value at index 1 of 'akku_soc_pro_stunde' should be 0.0." + # Check home appliances + assert ( + sum(result["Haushaltsgeraet_wh_pro_stunde"]) == 2000 + ), "The value at index -1 of 'Haushaltsgeraet_wh_pro_stunde' should be 2000." + print("All tests passed successfully.") diff --git a/visualization_results.pdf b/visualization_results.pdf new file mode 100644 index 0000000000000000000000000000000000000000..d614eeaa3de62671961a8c6ca71406b69c4e1e9f GIT binary patch literal 46283 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