Skip to content

Commit 654f9cb

Browse files
Move unit tests to integration tests (#732)
--------- Co-authored-by: Lukas Riedel <[email protected]>
1 parent a60241a commit 654f9cb

File tree

4 files changed

+321
-158
lines changed

4 files changed

+321
-158
lines changed

climada/engine/test/test_impact_data.py

Lines changed: 0 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -98,18 +98,6 @@ def test_emdat_df_2020_load(self):
9898
self.assertFalse(False in list(df['Disaster Subtype'] == 'Tropical cyclone'))
9999
self.assertFalse('Flood' in list(df['Disaster Subtype']))
100100

101-
class TestGDPScaling(unittest.TestCase):
102-
"""test scaling of impact values proportional to GDP"""
103-
def test_scale_impact2refyear(self):
104-
"""scale of impact values proportional to GDP"""
105-
impact_scaled = im_d.scale_impact2refyear([10, 100, 1000, 100, 100],
106-
[1999, 2005, 2015, 2000, 2000],
107-
['CZE', 'CZE', 'MEX', 'MEX', 'CZE'],
108-
reference_year=2015)
109-
# scaled impact value might change if worldbank input data changes,
110-
# check magnitude and adjust if test fails in the following line:
111-
self.assertListEqual(impact_scaled, [28, 137, 1000, 165, 304])
112-
113101
class TestEmdatProcessing(unittest.TestCase):
114102
def test_emdat_impact_event_2018(self):
115103
"""test emdat_impact_event event impact data extraction, version 2018"""
@@ -183,20 +171,6 @@ def test_emdat_affected_yearlysum(self):
183171
self.assertIn('USA', list(df['ISO']))
184172
self.assertIn('BGD', list(df['ISO']))
185173

186-
def test_emdat_damage_yearlysum(self):
187-
"""test emdat_impact_yearlysum yearly impact data extraction with scaling"""
188-
df = im_d.emdat_impact_yearlysum(EMDAT_TEST_CSV, countries=['Bangladesh', 'USA'],
189-
hazard='Flood', year_range=(2015, 2017),
190-
reference_year=2000)
191-
192-
self.assertEqual(36, df.size)
193-
self.assertAlmostEqual(df.impact.max(), 15150000000.0)
194-
self.assertEqual(df.impact_scaled.min(), 10943000.0)
195-
self.assertEqual(df["year"][5], 2017)
196-
self.assertEqual(df["reference_year"].max(), 2000)
197-
self.assertIn('USA', list(df['ISO']))
198-
self.assertIn(50, list(df['region_id']))
199-
200174
def test_emdat_countries_by_hazard_2020_pass(self):
201175
"""test to get list of countries impacted by tropical cyclones from 2000 to 2019"""
202176
iso3_codes, country_names = im_d.emdat_countries_by_hazard(EMDAT_2020_CSV_DEMO,
@@ -241,24 +215,6 @@ def test_emdat_to_impact_all_countries_pass(self):
241215
self.assertIn('SPI', countries2020)
242216
self.assertNotIn('SPI', countries)
243217

244-
def test_emdat_to_impact_scale(self):
245-
"""test import DR EM-DAT to Impact() for 1 country and ref.year (scaling)"""
246-
impact_emdat = im_d.emdat_to_impact(EMDAT_TEST_CSV, 'DR',
247-
year_range=[2010, 2016], countries=['USA'],
248-
hazard_type_emdat='Drought',
249-
reference_year=2016)[0]
250-
self.assertEqual(5, impact_emdat.event_id.size)
251-
self.assertEqual(4, impact_emdat.event_id[-1])
252-
self.assertEqual(0, impact_emdat.event_id[0])
253-
self.assertIn('2012-9235', impact_emdat.event_name)
254-
self.assertEqual(1, len(impact_emdat.eai_exp))
255-
self.assertAlmostEqual(impact_emdat.aai_agg, impact_emdat.eai_exp[0])
256-
self.assertAlmostEqual(0.14285714, np.unique(impact_emdat.frequency)[0], places=3)
257-
# scaled impact value might change if worldbank input data changes,
258-
# check magnitude and adjust if test failes in the following 2 lines:
259-
self.assertAlmostEqual(3.69, np.sum(impact_emdat.at_event * 1e-10), places=0)
260-
self.assertAlmostEqual(5.28, impact_emdat.aai_agg * 1e-9, places=0)
261-
262218
def test_emdat_to_impact_fakedata(self):
263219
"""test import TC EM-DAT to Impact() for all countries in CSV"""
264220
impact_emdat, countries = im_d.emdat_to_impact(EMDAT_TEST_CSV_FAKE, 'FL',
@@ -301,7 +257,6 @@ def test_emdat_to_impact_2020format(self):
301257
# Execute Tests
302258
if __name__ == "__main__":
303259
TESTS = unittest.TestLoader().loadTestsFromTestCase(TestEmdatImport)
304-
TESTS.addTests(unittest.TestLoader().loadTestsFromTestCase(TestGDPScaling))
305260
TESTS.addTests(unittest.TestLoader().loadTestsFromTestCase(TestEmdatProcessing))
306261
TESTS.addTests(unittest.TestLoader().loadTestsFromTestCase(TestEmdatToImpact))
307262
unittest.TextTestRunner(verbosity=2).run(TESTS)

climada/engine/unsequa/test/test_unsequa.py

Lines changed: 2 additions & 112 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,10 @@
3737
from climada.hazard import Hazard
3838
from climada.engine.unsequa import InputVar, CalcImpact, UncOutput, CalcCostBenefit
3939

40-
from climada.util.constants import EXP_DEMO_H5, HAZ_DEMO_H5, ENT_DEMO_TODAY, ENT_DEMO_FUTURE
41-
from climada.util.constants import TEST_UNC_OUTPUT_IMPACT, TEST_UNC_OUTPUT_COSTBEN
40+
from climada.util.constants import (EXP_DEMO_H5, HAZ_DEMO_H5, ENT_DEMO_TODAY, ENT_DEMO_FUTURE,
41+
TEST_UNC_OUTPUT_IMPACT, TEST_UNC_OUTPUT_COSTBEN)
4242
from climada.util.api_client import Client
4343

44-
4544
apiclient = Client()
4645
ds = apiclient.get_dataset_info(name=TEST_UNC_OUTPUT_IMPACT, status='test_dataset')
4746
_target_dir, [test_unc_output_impact] = apiclient.download_dataset(ds)
@@ -283,24 +282,6 @@ def test_plot_unc_imp(self):
283282
self.assertIsNotNone(plt_map)
284283
plt.close()
285284

286-
def test_plot_unc_cb(self):
287-
"""Test all cost benefit plots"""
288-
unc_output = UncOutput.from_hdf5(test_unc_output_costben)
289-
plt_s = unc_output.plot_sample()
290-
self.assertIsNotNone(plt_s)
291-
plt.close()
292-
plt_u = unc_output.plot_uncertainty()
293-
self.assertIsNotNone(plt_u)
294-
plt.close()
295-
with self.assertRaises(ValueError):
296-
unc_output.plot_rp_uncertainty()
297-
plt_sens = unc_output.plot_sensitivity()
298-
self.assertIsNotNone(plt_sens)
299-
plt.close()
300-
plt_sens_2 = unc_output.plot_sensitivity_second_order(salib_si='S1')
301-
self.assertIsNotNone(plt_sens_2)
302-
plt.close()
303-
304285
def test_save_load_pass(self):
305286
"""Test save and load output data"""
306287

@@ -680,58 +661,6 @@ def test_make_sample_pass(self):
680661
np.array(['x_haz', 'EN', 'IFi', 'CO', 'EG', 'PAA', 'MDD'])
681662
)
682663

683-
684-
def test_calc_uncertainty_pass(self):
685-
"""Test compute the uncertainty distribution for an impact"""
686-
687-
ent_iv, ent_fut_iv = make_costben_iv()
688-
_, _, haz_iv = make_input_vars()
689-
unc_calc = CalcCostBenefit(haz_iv, ent_iv)
690-
unc_data = unc_calc.make_sample( N=2)
691-
unc_data = unc_calc.uncertainty(unc_data)
692-
693-
self.assertEqual(unc_data.unit, ent_dem().exposures.value_unit)
694-
695-
self.assertEqual(
696-
unc_data.tot_climate_risk_unc_df.size,
697-
unc_data.n_samples
698-
)
699-
self.assertEqual(
700-
unc_data.cost_ben_ratio_unc_df.size,
701-
unc_data.n_samples * 4 #number of measures
702-
)
703-
self.assertEqual(
704-
unc_data.imp_meas_present_unc_df.size,
705-
0
706-
)
707-
self.assertEqual(
708-
unc_data.imp_meas_future_unc_df.size,
709-
unc_data.n_samples * 4 * 5 #All measures 4 and risks/benefits 5
710-
)
711-
712-
unc_calc = CalcCostBenefit(haz_iv, ent_iv, haz_iv, ent_fut_iv)
713-
unc_data = unc_calc.make_sample( N=2)
714-
unc_data = unc_calc.uncertainty(unc_data)
715-
716-
self.assertEqual(unc_data.unit, ent_dem().exposures.value_unit)
717-
718-
self.assertEqual(
719-
unc_data.tot_climate_risk_unc_df.size,
720-
unc_data.n_samples
721-
)
722-
self.assertEqual(
723-
unc_data.cost_ben_ratio_unc_df.size,
724-
unc_data.n_samples * 4 #number of measures
725-
)
726-
self.assertEqual(
727-
unc_data.imp_meas_present_unc_df.size,
728-
unc_data.n_samples * 4 * 5 #All measures 4 and risks/benefits 5
729-
)
730-
self.assertEqual(
731-
unc_data.imp_meas_future_unc_df.size,
732-
unc_data.n_samples * 4 * 5 #All measures 4 and risks/benefits 5
733-
)
734-
735664
def test_calc_uncertainty_pool_pass(self):
736665
"""Test compute the uncertainty distribution for an impact"""
737666

@@ -767,45 +696,6 @@ def test_calc_uncertainty_pool_pass(self):
767696
unc_data.n_samples * 4 * 5 #All measures 4 and risks/benefits 5
768697
)
769698

770-
def test_calc_sensitivity_pass(self):
771-
"""Test compute sensitivity default"""
772-
773-
ent_iv, _ = make_costben_iv()
774-
_, _, haz_iv = make_input_vars()
775-
unc_calc = CalcCostBenefit(haz_iv, ent_iv)
776-
unc_data = unc_calc.make_sample(N=4, sampling_kwargs={'calc_second_order': True})
777-
unc_data = unc_calc.uncertainty(unc_data)
778-
779-
unc_data = unc_calc.sensitivity(
780-
unc_data,
781-
sensitivity_kwargs = {'calc_second_order': True}
782-
)
783-
784-
self.assertEqual(unc_data.sensitivity_method, 'sobol')
785-
self.assertTupleEqual(unc_data.sensitivity_kwargs,
786-
tuple({'calc_second_order': 'True'}.items())
787-
)
788-
789-
for name, attr in unc_data.__dict__.items():
790-
if 'sens_df' in name:
791-
if 'imp_meas_present' in name:
792-
self.assertTrue(attr.empty)
793-
else:
794-
np.testing.assert_array_equal(
795-
attr.param.unique(),
796-
np.array(['x_haz', 'EN', 'IFi', 'CO'])
797-
)
798-
799-
np.testing.assert_array_equal(
800-
attr.si.unique(),
801-
np.array(['S1', 'S1_conf', 'ST', 'ST_conf', 'S2', 'S2_conf'])
802-
)
803-
804-
self.assertEqual(len(attr),
805-
len(unc_data.param_labels) * (4 + 4 + 4)
806-
)
807-
808-
809699
if __name__ == "__main__":
810700
TESTS = unittest.TestLoader().loadTestsFromTestCase(TestInputVar)
811701
TESTS.addTests(unittest.TestLoader().loadTestsFromTestCase(TestOutput))

0 commit comments

Comments
 (0)