import warnings import importlib import sys import types import pandas as pd def test_process_adjl_data_avoids_settingwithcopywarning(monkeypatch): sys.modules.pop("queries.process_adjl", None) sys.modules.setdefault("geopy", types.ModuleType("geopy")) geopy_distance = types.ModuleType("geopy.distance") geopy_distance.geodesic = lambda *args, **kwargs: None sys.modules["geopy.distance"] = geopy_distance fake_process_gsm = types.ModuleType("queries.process_gsm") fake_process_gsm.process_gsm_data = lambda *args, **kwargs: pd.DataFrame() sys.modules["queries.process_gsm"] = fake_process_gsm fake_process_wcdma = types.ModuleType("queries.process_wcdma") fake_process_wcdma.process_wcdma_data = lambda *args, **kwargs: pd.DataFrame() sys.modules["queries.process_wcdma"] = fake_process_wcdma fake_process_lte = types.ModuleType("queries.process_lte") fake_process_lte.process_lte_data = lambda *args, **kwargs: [pd.DataFrame(), pd.DataFrame()] sys.modules["queries.process_lte"] = fake_process_lte process_adjl_module = importlib.import_module("queries.process_adjl") process_adjl_data = process_adjl_module.process_adjl_data monkeypatch.setattr( process_adjl_module, "read_dump_excel", lambda *args, **kwargs: { "ADJL": pd.DataFrame( { "BSC": [1, None], "BCF": [2, None], "BTS": [3, None], "ADJL": ["g", "w"], "earfcn": [9285, None], "lteAdjCellTac": [100, None], "RNC": [None, 11], "WBTS": [None, 22], "WCEL": [None, 33], "AdjLEARFCN": [None, 9285], } ), "BTS": pd.DataFrame(), "WCEL": pd.DataFrame(), }, ) monkeypatch.setattr( process_adjl_module, "process_gsm_data", lambda *args, **kwargs: pd.DataFrame( { "ID_BTS": ["1_2_3"], "name": ["BTS_A"], "Code_Sector": ["100_1"], "ignored": ["x"], } ), ) monkeypatch.setattr( process_adjl_module, "process_wcdma_data", lambda *args, **kwargs: pd.DataFrame( { "ID_WCEL": ["11_22_33"], "name": ["WCEL_A"], "Code_Sector": ["100_1"], "ignored": ["x"], } ), ) monkeypatch.setattr( process_adjl_module, "process_lte_data", lambda *args, **kwargs: [ pd.DataFrame( { "Code_Sector": ["100_1"], "site_config_band": ["L700"], "tac": [100], "band": ["L700"], "earfcnDL": [9285], } ), pd.DataFrame( { "Code_Sector": [], "site_config_band": [], "tac": [], "band": [], "earfcn": [], } ), ], ) with warnings.catch_warnings(record=True) as caught: warnings.simplefilter("always") gsm_adjl_df, wcdma_adjl_df, df_bts, df_wcel, _ = process_adjl_data("dummy.xlsx") assert not any( issubclass(warning.category, pd.errors.SettingWithCopyWarning) for warning in caught ) assert list(df_bts["adjl_exists"]) == [True] assert list(df_wcel["adjl_exists"]) == [True] assert list(gsm_adjl_df["adjl_band"]) == ["L700"] assert list(wcdma_adjl_df["adjl_band"]) == ["L700"]