Add data_analysis/tests/test_core.py

This commit is contained in:
Mika 2026-07-05 02:07:36 +00:00
parent b5a6fbc92a
commit ef4e10c314

View file

@ -0,0 +1,54 @@
import io
import pandas as pd
import pytest
from unittest import mock
import src.data_analysis.core as core
@pytest.fixture
def sample_csv():
data = """timestamp,temperature,humidity,lux
2024-07-01T22:00:00,23.5,45.1,150.0
2024-07-01T23:00:00,22.9,46.0,120.0
2024-07-02T00:00:00,22.0,47.5,90.0
"""
return io.StringIO(data)
def test_load_data_valid(monkeypatch, sample_csv):
monkeypatch.setattr(pd, 'read_csv', lambda f, parse_dates=None: pd.read_csv(sample_csv, parse_dates=parse_dates))
df = core.load_data('fake_path.csv')
assert not df.empty, "Datenrahmen sollte nicht leer sein"
expected_columns = {'timestamp', 'temperature', 'humidity', 'lux'}
assert expected_columns.issubset(df.columns), f"Erwartete Spalten fehlen: {expected_columns - set(df.columns)}"
assert pd.api.types.is_datetime64_any_dtype(df['timestamp']), "timestamp-Spalte sollte datetime enthalten"
assert df['temperature'].dtype == float, "Temperatur sollte Float sein"
def test_load_data_invalid_path():
with pytest.raises(FileNotFoundError):
core.load_data('nonexistent.csv')
def test_plot_data_creates_plot(monkeypatch):
df = pd.DataFrame({
'timestamp': pd.date_range('2024-07-01', periods=3, freq='H'),
'temperature': [23.5, 22.9, 22.0],
'humidity': [45.1, 46.0, 47.5],
'lux': [150.0, 120.0, 90.0],
})
mock_savefig = mock.Mock()
with mock.patch('matplotlib.pyplot.savefig', mock_savefig):
core.plot_data(df)
mock_savefig.assert_called(), "Plot sollte gespeichert werden"
def test_plot_data_with_empty_dataframe():
df = pd.DataFrame(columns=['timestamp', 'temperature', 'humidity', 'lux'])
with pytest.raises(ValueError):
core.plot_data(df)