Spaces:
Sleeping
Sleeping
| 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 | |