Add data_analysis/tests/test_main.py

This commit is contained in:
Mika 2026-03-01 03:11:39 +00:00
parent a7e12f37c2
commit 8678e3fa5d

View file

@ -0,0 +1,49 @@
import pytest
import pandas as pd
import json
from data_analysis import main
@pytest.fixture
def sample_data():
# Simulierte Testdaten ähnlich zu tests/data/sample_data.csv
return pd.DataFrame([
{"time": "2024-06-01 00:00:00", "surface_type": "steel", "average_diameter": 0.5, "minutes_since_start": 0},
{"time": "2024-06-01 00:15:00", "surface_type": "steel", "average_diameter": 0.7, "minutes_since_start": 15},
{"time": "2024-06-01 00:30:00", "surface_type": "aluminum", "average_diameter": 0.4, "minutes_since_start": 30},
{"time": "2024-06-01 00:45:00", "surface_type": "aluminum", "average_diameter": 0.6, "minutes_since_start": 45}
])
def test_analyze_condensation_returns_analysisresult(sample_data):
result = main.analyze_condensation(sample_data)
assert isinstance(result, main.AnalysisResult)
assert isinstance(result.average_diameter, float)
assert isinstance(result.condensation_rates, list)
assert all(isinstance(r, float) for r in result.condensation_rates)
def test_average_diameter_computation(sample_data):
result = main.analyze_condensation(sample_data)
expected_avg = sample_data['average_diameter'].mean()
assert pytest.approx(result.average_diameter, rel=1e-6) == expected_avg
def test_to_json_output_structure(sample_data):
result = main.analyze_condensation(sample_data)
json_str = result.to_json()
parsed = json.loads(json_str)
assert set(parsed.keys()) == {"average_diameter", "condensation_rates"}
assert isinstance(parsed["average_diameter"], float)
assert isinstance(parsed["condensation_rates"], list)
def test_input_validation_with_invalid_data():
invalid_data = [{"surface_type": "steel", "average_diameter": "not_a_float"}]
with pytest.raises((TypeError, ValueError)):
main.analyze_condensation(invalid_data)
def test_empty_dataframe():
df = pd.DataFrame(columns=['time', 'surface_type', 'average_diameter', 'minutes_since_start'])
with pytest.raises(ValueError):
main.analyze_condensation(df)