def run_case_with_parameters(self, case_num, specific_params=None, special_case=None): """Run a test case with parameters using ParameterDiscovery strategy. Args: case_num (int): The test case number to run. """ test_wb = load_original_case(case_num) params = load_parameters_case(case_num) params["data_ends"] = None exp_dfs = load_expected_case(case_num, special_case) if specific_params: for specific_param, value in specific_params.items(): params[specific_param] = value # get dfs from the strategy series = XlSeries(test_wb) test_dfs = series.get_data_frames(params) if type(test_dfs) != list: test_dfs = [test_dfs] if type(exp_dfs) != list: exp_dfs = [exp_dfs] for test_df, exp_df in zip(test_dfs, exp_dfs): print(test_df.columns, exp_df.columns) self.assertTrue(compare_data_frames(test_df, exp_df))
def run_case_without_some_parameters(self, case_num, specific_params=None, special_case=None): """Run a test case deleting some parameters. Args: case_num: The test case number to run. """ test_wb = get_orig_cases_path(case_num) params = load_parameters_case(case_num) exp_dfs = load_expected_case(case_num, special_case) params.remove_non_critical() if specific_params: for specific_param, value in specific_params.items(): params[specific_param] = value # change safe_mode to True, for complete test in safe_mode (very slow) safe_mode = False series = XlSeries(test_wb) test_dfs = series.get_data_frames(params, safe_mode=safe_mode) # get them always into a list if type(test_dfs) != list: test_dfs = [test_dfs] if type(exp_dfs) != list: exp_dfs = [exp_dfs] for test_df, exp_df in zip(test_dfs, exp_dfs): self.assertTrue(compare_data_frames(test_df, exp_df))
def test_parse_time_case2_normal_behaviour(self): params = load_parameters_case(2) last_time = arrow.get(2009, 12, 16) exp_value = arrow.get(2009, 12, 17) next_value = "18-12-09" self.run_pt(params[0], exp_value, "17-12.09", last_time, next_value) self.run_pt(params[0], exp_value, "12-17.09", last_time, next_value) self.run_pt(params[0], exp_value, "17-12.2009", last_time, next_value) self.run_pt(params[0], exp_value, "12-17.2009", last_time, next_value) self.run_pt(params[0], exp_value, "2009.12.17", last_time, next_value) self.run_pt(params[0], exp_value, "17-12.09", None, next_value) self.run_pt(params[0], exp_value, "12-17.09", None, next_value) self.run_pt(params[0], exp_value, "17-12.2009", None, next_value) self.run_pt(params[0], exp_value, "12-17.2009", None, next_value) self.run_pt(params[0], exp_value, "2009.12.17", None, next_value) self.run_pt(params[0], exp_value, "17-12.09", last_time, None) self.run_pt(params[0], exp_value, "12-17.09", last_time, None) self.run_pt(params[0], exp_value, "17-12.2009", last_time, None) self.run_pt(params[0], exp_value, "12-17.2009", last_time, None) self.run_pt(params[0], exp_value, "2009.12.17", last_time, None) exp_value = arrow.get(2010, 3, 2) last_time = arrow.get(2010, 3, 1) next_value = arrow.get(2010, 3, 3) self.run_pt(params[0], exp_value, "02.03.10", last_time, next_value)
def test_parse_time(self): value = "17-12.09" last_time = arrow.get(2009, 12, 16) params = load_parameters_case(2) # print repr(params[0]) new_time_value = CleanSingleColumn()._parse_time(params[0], value, last_time) exp_time_value = arrow.get(2009, 12, 17) self.assertEqual(new_time_value, exp_time_value)
def test_get_period_ranges(self): test_wb = load_original_case(2) params = load_parameters_case(2) strategy_obj = ParameterDiscovery(test_wb, params) ws = strategy_obj.wb.active pr_d = pd.date_range("20020304", "20140410", freq="D") pr_m = pd.date_range("20020301", "20140301", freq="MS") period_ranges = list(strategy_obj._get_period_ranges(ws, params)) self.assertTrue(compare_period_ranges(pr_d, period_ranges[0])) self.assertTrue(compare_period_ranges(pr_m, period_ranges[1]))
def test_parse_time_case2_exceptions(self): params = load_parameters_case(2) last_time = arrow.get(2009, 12, 16) next_value = "18-12-09" with patch.object(ParseSimpleTime, "_get_possible_time_formats", return_value=["YY-MM-DD"]): value = "12-17.09" self.assertRaises(NoTimeValue, ParseSimpleTime()._parse_time, params[0], value, last_time, next_value) with patch.object(ParseSimpleTime, "_get_possible_time_formats", return_value=["MM-DD-YY"]): value = "17-12.09" self.assertRaises(NoTimeValue, ParseSimpleTime()._parse_time, params[0], value, last_time, next_value)
def test_time_make_sense(self): params = load_parameters_case(2) time_value = arrow.get(2017, 12, 9) last_time = arrow.get(2009, 12, 16) next_value = "18-12-09" make_sense = ParseSimpleTime()._time_make_sense( params[0], time_value, last_time, next_value) self.assertFalse(make_sense) make_sense = ParseSimpleTime()._time_make_sense( params[0], time_value, None, next_value) self.assertFalse(make_sense) time_value = arrow.get(2002, 3, 10) last_time = arrow.get(2010, 3, 1) make_sense = ParseSimpleTime()._time_make_sense( params[0], time_value, last_time, next_value) self.assertFalse(make_sense) time_value = arrow.get(2010, 2, 3) last_time = arrow.get(2010, 3, 1) next_value = arrow.get(2010, 3, 3) make_sense = ParseSimpleTime()._time_make_sense( params[0], time_value, last_time, next_value) self.assertFalse(make_sense) time_value = arrow.get(2010, 3, 2) last_time = arrow.get(2010, 3, 1) next_value = arrow.get(2010, 3, 3) make_sense = ParseSimpleTime()._time_make_sense( params[0], time_value, last_time, next_value) self.assertTrue(make_sense)
if not external: case = "test_case" + str(case_num) else: case = "external_case" + str(case_num) with open(os.path.join(abs_path("original"), "parse_time.json")) as f: values = json.load(f)[case] with open(os.path.join(abs_path("expected"), "parse_time.json")) as f: exp_vals = json.load(f)[case] exp_vals = [eval(value) for value in exp_vals] rule = re.compile("(\d)") case_num_int = int(rule.match(case_num).group()) if external: params = load_parameters_case(1) else: params = load_parameters_case(case_num_int) new_values = self.parse_time_values(strategy, values, params) msg = " ".join([ str(case), ":", str(new_values), "are not equal to", str(exp_vals) ]) self.assertEqual(new_values, exp_vals, msg) @load_case_number() # @unittest.skip("skip") def test_parse_time_case3(self, case_num):