예제 #1
0
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
예제 #2
0
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")
예제 #3
0
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")
예제 #4
0
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)
예제 #5
0
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