test_core_functionality.py hinzugefügt

This commit is contained in:
2025-08-04 09:37:04 +00:00
parent 5371aec072
commit d19c446b0d

View File

@@ -0,0 +1,60 @@
# test_core_functionality.py
import pytest
from helpers import extract_numeric_value, get_col_idx
from config import COLUMN_ORDER # Wir brauchen die echte Spaltenreihenfolge für den Test
# --- Testfälle für die kritische Funktion extract_numeric_value ---
# Format: (Input-String, erwarteter Output als String)
umsatz_test_cases = [
("ca. 1.234,56 Mio. € (2022)", "1"), # In Mio, Tausendertrenner ., Komma als Dezimal
("rund 500 Tsd. US-Dollar", "0"), # Tausender wird zu 0.5, gerundet 0
("750.000 Euro", "1"), # . als Tausendertrenner, wird zu 0.75, gerundet 1
("1,5 Milliarden CHF", "1500"), # Milliarden-Einheit
("25.7 mn", "26"), # "mn" Abkürzung
("keine Angabe", "k.A."), # Text
("0", "0"), # Null-Wert
("FEHLERHAFTER WERT", "k.A."), # Fehler-Fallback
("1234567", "1"), # Reine Zahl ohne Einheit
("€ 850 k", "1"), # "k" für Tausend
]
mitarbeiter_test_cases = [
("ca. 1.234", "1234"),
("rund 500 Tsd.", "500000"),
("1,5 Millionen", "1500000"),
("1.234 (Stand 2023)", "1234"),
("k.A.", "k.A."),
]
@pytest.mark.parametrize("input_str, expected", umsatz_test_cases)
def test_extract_umsatz_from_various_formats(input_str, expected):
"""Prüft, ob `extract_numeric_value` für Umsatz verschiedene Formate korrekt in Millionen umwandelt."""
assert extract_numeric_value(input_str, is_umsatz=True) == expected
@pytest.mark.parametrize("input_str, expected", mitarbeiter_test_cases)
def test_extract_mitarbeiter_from_various_formats(input_str, expected):
"""Prüft, ob `extract_numeric_value` für Mitarbeiter verschiedene Formate korrekt in absolute Zahlen umwandelt."""
assert extract_numeric_value(input_str, is_umsatz=False) == expected
# --- Testfälle für die neue, zentrale get_col_idx Funktion ---
def test_get_col_idx_success():
"""Prüft, ob ein gültiger Spaltenname den korrekten Index zurückgibt."""
# Wir nehmen an, "CRM Name" ist die zweite Spalte laut COLUMN_ORDER
assert get_col_idx("CRM Name") == 1
# Wir nehmen an, "ReEval Flag" ist die erste Spalte
assert get_col_idx("ReEval Flag") == 0
def test_get_col_idx_failure():
"""Prüft, ob ein ungültiger Spaltenname None zurückgibt."""
assert get_col_idx("Diese Spalte existiert nicht") is None
def test_get_col_idx_edge_cases():
"""Prüft Randfälle."""
assert get_col_idx("") is None
assert get_col_idx(None) is None
# Letzte Spalte
last_column_name = COLUMN_ORDER[-1]
expected_last_index = len(COLUMN_ORDER) - 1
assert get_col_idx(last_column_name) == expected_last_index