Skip to content

Commit

Permalink
build: fix references to long-deprecated unittest aliases
Browse files Browse the repository at this point in the history
  • Loading branch information
darvid committed Oct 11, 2023
1 parent de99a24 commit 6c0927f
Show file tree
Hide file tree
Showing 4 changed files with 67 additions and 85 deletions.
41 changes: 16 additions & 25 deletions tests/model/test_meta_model.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,12 @@

import pandas as pd

from pyfair.model.model import FairModel
from pyfair.model.meta_model import FairMetaModel
from pyfair.model.model import FairModel
from pyfair.utility.fair_exception import FairException


class TestFairMetaModel(unittest.TestCase):

_RISK_TABLE_COLUMN_COUNT = 2
_N_SAMPLES = 100
_MODEL_JSON = '{ "Loss Event Frequency": { "low": 20, "mode": 100, "high": 900 }, "Loss Magnitude": { "low": 3000000, "mode": 3500000, "high": 5000000 }, "name": "Regular Model 1", "n_simulations": 10000, "random_seed": 42, "model_uuid": "b6c6c968-a03c-11e9-a5db-f26e0bbd6dbc", "type": "FairModel", "creation_date": "2019-07-06 17:23:43.647370" }'
Expand All @@ -29,28 +28,22 @@ def test_creation(self):
self.assertTrue(self._meta._creation_date)
# Check that the table is of proper-ish
self.assertEqual(
len(self._meta._risk_table.columns),
self._RISK_TABLE_COLUMN_COUNT
len(self._meta._risk_table.columns), self._RISK_TABLE_COLUMN_COUNT
)
# Test regular instantiation
m1 = FairModel.read_json(self._MODEL_JSON)
m2 = FairModel.read_json(self._MODEL_JSON)
self._meta = FairMetaModel('New Model', [m1, m2])
self._meta = FairMetaModel("New Model", [m1, m2])
# Throw garbage in metamodel
self.assertRaises(
FairException,
FairMetaModel,
'Garnage Name',
['Garbage Input']
FairException, FairMetaModel, "Garnage Name", ["Garbage Input"]
)

def test_read_json(self):
"""setUp covers most, so just test Model JSON fails"""
# Ensure metamodel fails
self.assertRaises(
FairException,
FairMetaModel.read_json,
self._MODEL_JSON
FairException, FairMetaModel.read_json, self._MODEL_JSON
)

def test_inspection(self):
Expand All @@ -68,7 +61,7 @@ def test_calculation(self):
# Test regular instantiation
m1 = FairModel.read_json(self._MODEL_JSON)
m2 = FairModel.read_json(self._MODEL_JSON)
self._meta = FairMetaModel('New Model', [m1, m2])
self._meta = FairMetaModel("New Model", [m1, m2])
# Test before
self.assertFalse(self._meta.calculation_completed())
# Calculate
Expand All @@ -80,20 +73,18 @@ def test_exports(self):
"""Test parameter and result exports are OK."""
# Get rid of weird formatting included in class attribute
self.maxDiff = 5_000
self.assertEquals(
self._meta.to_json().replace('\n','').replace(' ','') ,
self._META_MODEL_JSON.replace('\n','').replace(' ','')
self.assertEqual(
self._meta.to_json().replace("\n", "").replace(" ", ""),
self._META_MODEL_JSON.replace("\n", "").replace(" ", ""),
)
# Test Risk Table
param_dict = json.loads(self._META_MODEL_JSON)
del param_dict['creation_date']
del param_dict['model_uuid']
del param_dict['name']
del param_dict['type']
self.assertEquals(
self._meta.export_params(),
param_dict
)
del param_dict["creation_date"]
del param_dict["model_uuid"]
del param_dict["name"]
del param_dict["type"]
self.assertEqual(self._meta.export_params(), param_dict)


if __name__ == '__main__':
if __name__ == "__main__":
unittest.main()
62 changes: 35 additions & 27 deletions tests/report/test_base_report.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,22 +9,23 @@


class TestFairBaseReport(unittest.TestCase):

_CALLER_SOURCE_DOCSTRING = "\"\"\"Script to create and run a test suite.\"\"\""
_CALLER_SOURCE_DOCSTRING = '"""Script to create and run a test suite."""'
_BASE64_BYTES = bytes([100, 100, 100, 100, 100])
_BASE64_BYTES_TAG = '<img src="data:image/png;base64, ZGRkZGQ=" alt=""/>'
_BASE64_FIG_TAG_FIRST_50 = '<img src="data:image/png;base64, iVBORw0KGgoAAAAN'
_BASE64_FIG_TAG_FIRST_50 = (
'<img src="data:image/png;base64, iVBORw0KGgoAAAAN'
)

def setUp(self):
self._fbr = FairBaseReport()
self._model_1 = FairModel('model1', n_simulations=5)
self._model_1.input_data('Risk', mean=100, stdev=5)
self._model_1 = FairModel("model1", n_simulations=5)
self._model_1.input_data("Risk", mean=100, stdev=5)
self._model_1.calculate_all()
self._model_2 = FairModel('model2', n_simulations=5)
self._model_2.input_data('Risk', mean=1000, stdev=50)
self._model_2 = FairModel("model2", n_simulations=5)
self._model_2.input_data("Risk", mean=1000, stdev=50)
self._model_2.calculate_all()
self._metamodel = FairMetaModel(
name='meta',
name="meta",
models=[self._model_1, self._model_2],
)
self._metamodel.calculate_all()
Expand All @@ -38,7 +39,7 @@ def tearDown(self):
def test_input_check(self):
"""Test the validity of the input check"""
# Create inputs
bad_model = 'Not a model'
bad_model = "Not a model"
model = self._model_1
bad_meta = 0
meta = self._metamodel
Expand All @@ -51,20 +52,21 @@ def test_input_check(self):
for good_item in [model_list]:
self._fbr._input_check(model_list)
# Test bad items
for bad_item in [bad_model, bad_meta, bad_model_list_1, bad_model_list_2]:
self.assertRaises(
FairException,
self._fbr._input_check,
bad_item
)
for bad_item in [
bad_model,
bad_meta,
bad_model_list_1,
bad_model_list_2,
]:
self.assertRaises(FairException, self._fbr._input_check, bad_item)

def test_base64ify(self):
"""Test base64ify"""
tag = self._fbr.base64ify(self._BASE64_BYTES)
self.assertEquals(tag, self._BASE64_BYTES_TAG)
self.assertEqual(tag, self._BASE64_BYTES_TAG)

# DO NOT TEST to_html or _construct_output. Those are done by subclass.

def test_fig_to_img_tag(self):
"""Convert fig to image tag"""
fig = matplotlib.pyplot.figure()
Expand All @@ -77,28 +79,34 @@ def test_get_tree(self):

def test_get_distribution(self):
"""Test distribution creation"""
self._fbr._get_distribution(self._model_1, currency_prefix='$')
self._fbr._get_distribution([self._model_1, self._model_2], currency_prefix='$')
self._fbr._get_distribution(self._model_1, currency_prefix="$")
self._fbr._get_distribution(
[self._model_1, self._model_2], currency_prefix="$"
)

def test_get_distribution_icon(self):
"""Test distribution icon creation"""
self._fbr._get_distribution_icon(self._model_1, 'Risk')
self._fbr._get_distribution_icon(self._model_1, "Risk")

def test_get_exceedence_curves(self):
"""Test exceedence curve creation"""
self._fbr._get_exceedence_curves(self._model_1, currency_prefix='$')
self._fbr._get_exceedence_curves([self._model_1, self._model_2], currency_prefix='$')
self._fbr._get_exceedence_curves(self._model_1, currency_prefix="$")
self._fbr._get_exceedence_curves(
[self._model_1, self._model_2], currency_prefix="$"
)

def test_get_violins(self):
"""Test violin creation"""
self._fbr._get_violins(self._metamodel)

def test_get_overview_table(self):
"""Test overvieww table"""
self._fbr._get_overview_table({
'name_1': self._model_1,
'name_2': self._model_2,
})
self._fbr._get_overview_table(
{
"name_1": self._model_1,
"name_2": self._model_2,
}
)

def test_get_model_parameter_table(self):
"""Get paramter table"""
Expand All @@ -109,5 +117,5 @@ def test_get_metamodel_parameter_table(self):
self._fbr._get_metamodel_parameter_table(self._metamodel)


if __name__ == '__main__':
if __name__ == "__main__":
unittest.main()
20 changes: 4 additions & 16 deletions tests/utility/test_beta_pert.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@


class TestFairViolinPlot(unittest.TestCase):

_CORRECT_MEAN = 23.848266752716704

def setUp(self):
Expand All @@ -16,24 +15,13 @@ def setUp(self):
def test_beta_pert(self):
"""Test BetaPert generation"""
# Test correct usage
fbp = FairBetaPert(
low=5,
mode=20,
high=50,
gamma=2
)
fbp = FairBetaPert(low=5, mode=20, high=50, gamma=2)
variates = fbp.random_variates(1_000)
mean = variates.mean()
self.assertEquals(mean, self._CORRECT_MEAN)
self.assertEqual(mean, self._CORRECT_MEAN)
# Test incorrect usage
self.assertRaises(
FairException,
FairBetaPert,
low=5,
mode=5,
high=5
)
self.assertRaises(FairException, FairBetaPert, low=5, mode=5, high=5)


if __name__ == '__main__':
if __name__ == "__main__":
unittest.main()
29 changes: 12 additions & 17 deletions tests/utility/test_factory.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,14 @@


class TestFairFactory(unittest.TestCase):

_STATIC_ARGS = {'Loss Magnitude': {'constant': 5_000_000}}
_VARIABLE_ARGS_1 = {'Loss Event Frequency': {'constant': 900}}
_VARIABLE_ARGS_2 = {'Loss Event Frequency': {'constant': 100}}
_VARIABLE_ARGS_3 = {'Loss Event Frequency': {'constant': 300}}
_STATIC_ARGS = {"Loss Magnitude": {"constant": 5_000_000}}
_VARIABLE_ARGS_1 = {"Loss Event Frequency": {"constant": 900}}
_VARIABLE_ARGS_2 = {"Loss Event Frequency": {"constant": 100}}
_VARIABLE_ARGS_3 = {"Loss Event Frequency": {"constant": 300}}
_VARIABLE_ARGS_DICT = {
'model_1': _VARIABLE_ARGS_1,
'model_2': _VARIABLE_ARGS_2,
'model_3': _VARIABLE_ARGS_3,
"model_1": _VARIABLE_ARGS_1,
"model_2": _VARIABLE_ARGS_2,
"model_3": _VARIABLE_ARGS_3,
}

def setUp(self):
Expand All @@ -25,23 +24,19 @@ def tearDown(self):
def test_gen_from_partial(self):
"""Test basic generation function via factory"""
# Generate
model = self._fac.generate_from_partial(
'name',
self._VARIABLE_ARGS_1
)
model = self._fac.generate_from_partial("name", self._VARIABLE_ARGS_1)
self.assertIsInstance(model, FairModel)

def test_gen_from_partials(self):
"""Test generation of multiple items via factory"""
# Generate
models = self._fac.generate_from_partials(self._VARIABLE_ARGS_DICT)
# Ensure proper number of argicles generated
self.assertEquals(len(models), len(self._VARIABLE_ARGS_DICT))
self.assertEqual(len(models), len(self._VARIABLE_ARGS_DICT))
# Ensure they are all models
for model in models:
self.assertIsInstance(model, FairModel)



if __name__ == '__main__':
unittest.main()
if __name__ == "__main__":
unittest.main()

0 comments on commit 6c0927f

Please sign in to comment.