def test_defaults(): dummy_set = App('dummy_set', '', '1.0') @dummy_set.metric(description='', input_fields=[IN1, [IN2, IN3]], output_fields=[OUT1]) def test_defaults(val, df=None): sums = val.sum() if df is not None: sums += df.sum().sum() return pd.Series([sums]) data_map = {'input': {}, 'output': pd.DataFrame()} data_map['input']['data'] = DUMMY_DATAFRAME[[IN1.key[-1], IN2.key[-1]]] report = dummy_set.run(data_map) assert len(report['existing_results_skipped']) == 0 assert len(report['unneeded_metrics']) == 0 assert len(report['metrics_missing_input']) == 0 assert len(report['run_results']) == 1 assert report['run_results']['test_defaults']['result'] == "Success" assert OUT1.get_by_path(data_map)[0] == 6 data_map['input']['data'] = DUMMY_DATAFRAME report = dummy_set.run(data_map) assert len(report['existing_results_skipped']) == 0 assert len(report['unneeded_metrics']) == 0 assert len(report['metrics_missing_input']) == 0 assert len(report['run_results']) == 1 assert report['run_results']['test_defaults']['result'] == "Success" assert OUT1.get_by_path(data_map)[0] == 45
def test_subfield_missmatch(): with pytest.raises(AssertionError): dummy_set = App('dummy_set', '', '1.0') @dummy_set.metric(description='', input_fields=[[IN1, IN_CONF]], output_fields=[OUT1]) # pylint: disable=unused-variable def test_subfield_missmatch1(df): return df dummy_set = App('dummy_set', '', '1.0') @dummy_set.metric(description='', input_fields=[[IN1, IN2]], output_fields=[OUT1]) # pylint: disable=unused-variable def test_subfield_missmatch(df): return df data_map = {'input': {}, 'output': pd.DataFrame()} data_map['input']['data'] = {'in1': [1, 2, 3], 'in2': [4, 5, 6]} report = dummy_set.run(data_map) assert len(report['existing_results_skipped']) == 0 assert len(report['unneeded_metrics']) == 0 assert len(report['metrics_missing_input']) == 0 assert report['run_results']['test_subfield_missmatch']['result'].strip( ).endswith("is not a DataFrame and can't return a column set")
def test_output_mismatch(): def base_dummy(dummy): ret = 'foo' return tuple( ret for i in range(dummy) ) dummy_set2 = App('dummy_set', '', '1.0') with pytest.raises(AssertionError): @dummy_set2.metric( description='', input_fields=[FIELD_INPUT_DUMMY1], output_fields=[] ) def dummy_out0(dummy): return base_dummy(dummy) @dummy_set2.metric( description='', input_fields=[FIELD_INPUT_DUMMY1], output_fields=[FIELD_RESULT_DUMMY_BAD_OUT] ) def dummy_out1(dummy): return base_dummy(dummy) @dummy_set2.metric( description='', input_fields=[FIELD_INPUT_DUMMY1], output_fields=[FIELD_RESULT_DUMMY_BAD_OUT2, FIELD_RESULT_DUMMY_BAD_OUT3] ) def dummy_out2(dummy): return base_dummy(dummy) data_map = {'input': {}, 'output': {}} for out_count in range(4): FIELD_INPUT_DUMMY1.set_by_path(data_map, out_count) report = dummy_set2.run(data_map) assert len(report['existing_results_skipped']) == 0 assert len(report['unneeded_metrics']) == 0 assert len(report['metrics_missing_input']) == 0 assert len(report['run_results']) == 2 assert report['run_results']['dummy_out1']['result'] == "Success" if out_count == 2: assert report['run_results']['dummy_out2']['result'] == "Success" else: assert report['run_results']['dummy_out2']['result'].strip().endswith( "Metric didn't produce expected number of outputs")
def test_mix(): dummy_set = App('dummy_set', '', '1.0') val = 'foo' @dummy_set.metric(description='', input_fields=[[IN1, IN2], IN_CONF], output_fields=[OUT1]) def test_mix(df, conf): return pd.Series([conf + str(df.sum().sum())]) data_map = {'input': {}, 'output': pd.DataFrame()} data_map['input']['data'] = DUMMY_DATAFRAME data_map['input']['config'] = 'foo' report = dummy_set.run(data_map) assert len(report['existing_results_skipped']) == 0 assert len(report['unneeded_metrics']) == 0 assert len(report['metrics_missing_input']) == 0 assert report['run_results']['test_mix']['result'] == "Success" test_sum = DUMMY_DATAFRAME[[IN1.key[-1], IN2.key[-1]]].sum().sum() assert OUT1.get_by_path(data_map)[0] == val + str(test_sum)
def test_missing_one(): dummy_set = App('dummy_set', '', '1.0') @dummy_set.metric(description='', input_fields=[[IN1, IN5]], output_fields=[OUT1]) def test_missing_one(df): return pd.Series([df.sum().sum()]) data_map = {'input': {}, 'output': pd.DataFrame()} data_map['input']['data'] = DUMMY_DATAFRAME report = dummy_set.run(data_map) assert len(report['existing_results_skipped']) == 0 assert len( report['unneeded_metrics']) == len(dummy_set.graph.get_metrics()) - 1 assert report['metrics_missing_input'] == { 'test_missing_one': { 'bad_field': 'input/data/in5', 'reason': 'Missing input', 'has_default': False } } assert len(report['run_results']) == 0