Add data_analysis/tests/test_main.py
This commit is contained in:
parent
a7e12f37c2
commit
8678e3fa5d
1 changed files with 49 additions and 0 deletions
49
data_analysis/tests/test_main.py
Normal file
49
data_analysis/tests/test_main.py
Normal 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)
|
||||
Loading…
Reference in a new issue