db_query / tests /test_engine_v2.py
DavMelchi's picture
Improve Health Check V2 workflow and silence concat warning
5065564
import warnings
import pandas as pd
from process_kpi.kpi_health_check.engine_v2 import evaluate_health_check
def test_evaluate_health_check_avoids_concat_futurewarning_with_all_na_columns():
daily = pd.DataFrame(
{
"site_code": [1001, 1001, 1002, 1002],
"date_only": pd.to_datetime(
["2026-03-01", "2026-03-02", "2026-03-01", "2026-03-02"]
),
"City": [None, None, None, None],
"kpi_a": [90.0, 91.0, 88.0, 87.0],
"kpi_b": [1.0, 2.0, 3.0, 4.0],
}
)
rules_df = pd.DataFrame(
{
"RAT": ["LTE", "LTE"],
"KPI": ["kpi_a", "kpi_b"],
"direction": ["higher_is_better", "lower_is_better"],
"sla": [95.0, pd.NA],
"policy": ["enforce", "enforce"],
}
)
with warnings.catch_warnings(record=True) as caught:
warnings.simplefilter("always")
status_df, summary_df = evaluate_health_check(
daily=daily,
rat="LTE",
rules_df=rules_df,
baseline_days_n=1,
recent_days_n=1,
rel_threshold_pct=10.0,
min_consecutive_days=1,
granularity="Daily",
)
future_warnings = [w for w in caught if issubclass(w.category, FutureWarning)]
assert not future_warnings
assert not status_df.empty
assert not summary_df.empty