| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License. |
| |
| from mock import patch |
| import unittest |
| |
| import ocw_config_runner.evaluation_creation as eval_create |
| import ocw.metrics |
| |
| import yaml |
| |
| class TestMetricLoad(unittest.TestCase): |
| def test_valid_metric_load(self): |
| config = yaml.load(""" |
| metrics: |
| - Bias |
| """) |
| loaded_metrics = [eval_create._load_metric(m)() |
| for m in config['metrics']] |
| self.assertTrue(isinstance(loaded_metrics[0], ocw.metrics.Bias)) |
| |
| @patch('ocw_config_runner.evaluation_creation.logger') |
| def test_invalid_metric_load(self, mock_logger): |
| config = yaml.load(""" |
| metrics: |
| - ocw.metrics.Bias |
| """) |
| eval_create._load_metric(config['metrics'][0]) |
| error = ( |
| 'User-defined metrics outside of the ocw.metrics module ' |
| 'cannot currently be loaded. If you just wanted a metric ' |
| 'found in ocw.metrics then do not specify the full ' |
| 'package and module names. See the documentation for examples.' |
| ) |
| mock_logger.error.assert_called_with(error) |