cognitive_mapping_probe / tests /test_app_logic.py
neuralworm's picture
cs 1.0
a345062
raw
history blame
1.84 kB
import pandas as pd
import pytest
# Importiere die zu testende Funktion aus der App-Datei
from app import run_and_display
def test_run_and_display_logic(mocker):
"""
Testet die Datenverarbeitungs- und UI-Formatierungslogik in `app.py`.
Wir mocken die teure `run_seismic_analysis`-Funktion, um uns nur auf die
Logik von `run_and_display` zu konzentrieren.
"""
# 1. Definiere die Schein-Ausgabe, die `run_seismic_analysis` zurückgeben soll
mock_results = {
"verdict": "Mock Verdict",
"stats": {
"mean_delta": 0.5,
"std_delta": 0.1,
"max_delta": 1.0,
},
"state_deltas": [0.4, 0.5, 0.6]
}
mocker.patch('app.run_seismic_analysis', return_value=mock_results)
# Mocke den Gradio Progress-Callback
mock_progress = mocker.MagicMock()
# 2. Rufe die zu testende Funktion auf
verdict_md, plot_df, raw_json = run_and_display(
model_id="mock_model",
prompt_type="mock_prompt",
seed=42,
num_steps=3,
progress=mock_progress
)
# 3. Validiere die Ausgaben mit granularen Assertions
# ASSERT 1: Die Markdown-Ausgabe muss die korrekten Statistiken enthalten
assert "Mock Verdict" in verdict_md
assert "Mean Delta:" in verdict_md
assert "0.5000" in verdict_md
assert "Std Dev Delta:" in verdict_md
assert "0.1000" in verdict_md
# ASSERT 2: Der Pandas DataFrame für den Plot muss korrekt erstellt werden
assert isinstance(plot_df, pd.DataFrame)
assert "Internal Step" in plot_df.columns
assert "State Change (Delta)" in plot_df.columns
assert len(plot_df) == 3
assert plot_df["State Change (Delta)"].tolist() == [0.4, 0.5, 0.6]
# ASSERT 3: Die Raw-JSON-Ausgabe muss die Originaldaten enthalten
assert raw_json == mock_results