test_target_by_features_table.py
1 import json 2 from typing import Optional 3 4 import pandas as pd 5 import pytest 6 7 from evidently.legacy.metrics import TargetByFeaturesTable 8 from evidently.legacy.options.agg_data import RenderOptions 9 from evidently.legacy.options.base import Options 10 from evidently.legacy.pipeline.column_mapping import ColumnMapping 11 from evidently.legacy.report import Report 12 13 14 @pytest.mark.parametrize( 15 "current_data, reference_data, data_mapping, metric, expected_json", 16 ( 17 ( 18 pd.DataFrame({"target": [1, 2, 3]}), 19 pd.DataFrame({"target": [1, 2, 3]}), 20 None, 21 TargetByFeaturesTable(), 22 {}, 23 ), 24 ( 25 pd.DataFrame({"target": [1, 2, 3]}), 26 pd.DataFrame({"target": [1, 2, 3]}), 27 None, 28 TargetByFeaturesTable(), 29 {}, 30 ), 31 ), 32 ) 33 def test_target_by_features_table_success( 34 current_data: pd.DataFrame, 35 reference_data: pd.DataFrame, 36 data_mapping: Optional[ColumnMapping], 37 metric: TargetByFeaturesTable, 38 expected_json: dict, 39 ) -> None: 40 report = Report(metrics=[metric], options=Options(render=RenderOptions(raw_data=True))) 41 report.run(current_data=current_data, reference_data=reference_data, column_mapping=data_mapping) 42 assert report.show() 43 result_json = report.json() 44 result = json.loads(result_json) 45 assert result["metrics"][0]["metric"] == "TargetByFeaturesTable" 46 assert result["metrics"][0]["result"] == expected_json