Commit 31ea6f83 authored by Le Roux Erwan's avatar Le Roux Erwan
Browse files

[refactor] add test coverage tool. improve coverage for slicer and coordinates 3D

parent 7c968194
No related merge requests found
Showing with 48 additions and 5 deletions
+48 -5
...@@ -6,7 +6,7 @@ from extreme_data.meteo_france_data.scm_models_data.visualization.study_visualiz ...@@ -6,7 +6,7 @@ from extreme_data.meteo_france_data.scm_models_data.visualization.study_visualiz
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
def test(): def run_plot():
study = CrocusSnowLoad3Days(altitude=1200) study = CrocusSnowLoad3Days(altitude=1200)
study_visualizer = StudyVisualizer(study) study_visualizer = StudyVisualizer(study)
study_visualizer.visualize_max_graphs_poster('Queyras', altitude='noope', snow_abbreviation="ok", color='red') study_visualizer.visualize_max_graphs_poster('Queyras', altitude='noope', snow_abbreviation="ok", color='red')
......
import datetime import datetime
import os.path as op import os.path as op
import subprocess
from cached_property import cached_property from cached_property import cached_property
VERSION = datetime.datetime.now() VERSION = datetime.datetime.now()
...@@ -10,6 +12,10 @@ for c in [' ', ':', '-']: ...@@ -10,6 +12,10 @@ for c in [' ', ':', '-']:
NB_CORES = 7 NB_CORES = 7
def terminal_command(command_str):
return subprocess.check_output(command_str.split()).decode("utf-8").split('\n')
def get_root_path() -> str: def get_root_path() -> str:
return op.dirname(op.abspath(__file__)) return op.dirname(op.abspath(__file__))
......
import os.path as op
from root_utils import terminal_command, get_root_path
"""
To run all my test do: python -m unittest
Test coverage is only in the professional version of pycharm.
To configure the extent of my coverage: modify the .coveragerc
To run test coverage in the terminal: coverage run -m unittest
Then a hidden file .coverage is create at the root
To create a html file from it do: coverage html
Then open the htlmcov/index.html in your browser
"""
def run_test_coverage():
if op.exists(op.join(get_root_path(), "coverage_html_report")):
terminal_command("rm -r coverage_html_report")
terminal_command("coverage run -m unittest")
def display_last_test_coverage():
terminal_command("coverage html")
terminal_command("firefox coverage_html_report/index.html &")
if __name__ == '__main__':
# run_test_coverage()
display_last_test_coverage()
...@@ -23,7 +23,7 @@ class AlpsStation3DCoordinates(AbstractSpatialCoordinates): ...@@ -23,7 +23,7 @@ class AlpsStation3DCoordinates(AbstractSpatialCoordinates):
return super().from_csv(csv_path) return super().from_csv(csv_path)
@classmethod @classmethod
def transform_txt_into_csv(cls): def transform_txt_into_csv(cls, create_csv=True):
filepath = op.join(cls.FULL_PATH, 'original data', 'coord-lambert2.txt') filepath = op.join(cls.FULL_PATH, 'original data', 'coord-lambert2.txt')
station_to_coordinates = {} station_to_coordinates = {}
with open(filepath, 'r') as f: with open(filepath, 'r') as f:
...@@ -35,8 +35,9 @@ class AlpsStation3DCoordinates(AbstractSpatialCoordinates): ...@@ -35,8 +35,9 @@ class AlpsStation3DCoordinates(AbstractSpatialCoordinates):
df = pd.DataFrame.from_dict(data=station_to_coordinates, orient='index', df = pd.DataFrame.from_dict(data=station_to_coordinates, orient='index',
columns=[cls.COORDINATE_X, cls.COORDINATE_Y, cls.COORDINATE_Z]) columns=[cls.COORDINATE_X, cls.COORDINATE_Y, cls.COORDINATE_Z])
filepath = op.join(cls.FULL_PATH, 'coord-lambert2.csv') filepath = op.join(cls.FULL_PATH, 'coord-lambert2.csv')
assert not op.exists(filepath) if create_csv: # pragma: no cover
df.to_csv(filepath) assert not op.exists(filepath)
df.to_csv(filepath)
class AlpsStation3DCoordinatesWithAnisotropy(AlpsStation3DCoordinates): class AlpsStation3DCoordinatesWithAnisotropy(AlpsStation3DCoordinates):
......
...@@ -46,7 +46,7 @@ class AbstractSlicer(object): ...@@ -46,7 +46,7 @@ class AbstractSlicer(object):
for f, name in [(len, 'Total'), (sum, 'train')]: for f, name in [(len, 'Total'), (sum, 'train')]:
msg += "{}: {} ".format(name, f(s)) msg += "{}: {} ".format(name, f(s))
msg += ' / ' msg += ' / '
if show: if show: # pragma: no cover
print(msg) print(msg)
return msg return msg
......
...@@ -31,6 +31,12 @@ from test.test_utils import load_test_spatiotemporal_coordinates, load_test_spat ...@@ -31,6 +31,12 @@ from test.test_utils import load_test_spatiotemporal_coordinates, load_test_spat
load_test_temporal_coordinates, load_test_1D_and_2D_spatial_coordinates load_test_temporal_coordinates, load_test_1D_and_2D_spatial_coordinates
class TestCoordinatesUtils(unittest.TestCase):
def test_csv_creation(self):
AlpsStation3DCoordinatesWithAnisotropy.transform_txt_into_csv(create_csv=False)
class TestSpatialCoordinates(unittest.TestCase): class TestSpatialCoordinates(unittest.TestCase):
DISPLAY = False DISPLAY = False
......
...@@ -46,6 +46,7 @@ class TestSlicerForDataset(unittest.TestCase): ...@@ -46,6 +46,7 @@ class TestSlicerForDataset(unittest.TestCase):
assert self.complete_shape is not None assert self.complete_shape is not None
for train_split_ratio, data_shape in train_split_ratio_to_observation_shape.items(): for train_split_ratio, data_shape in train_split_ratio_to_observation_shape.items():
for dataset in self.load_datasets(train_split_ratio): for dataset in self.load_datasets(train_split_ratio):
dataset.slicer.summary(show=False)
self.assertEqual(self.complete_shape, self.get_shape(dataset, Split.all)) self.assertEqual(self.complete_shape, self.get_shape(dataset, Split.all))
for split in ALL_SPLITS_EXCEPT_ALL: for split in ALL_SPLITS_EXCEPT_ALL:
if split in dataset.slicer.splits: if split in dataset.slicer.splits:
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment