def test_acceptance_columnsTypes_int(self): # Log to file self.logger.debug("\n\n### Test Acceptance Columns Int Type\n") # Seleziono le colonne dalle info del DB default_cols_int = { i: col for i, col in self.default_columns_type.items() if 'int' in str(col) } test_columns_types = dict() cast_result = dict() # seleziono le colonne tipo int for num_col in default_cols_int.keys(): selected_cols_df = self.anagrafica.df.iloc[:, num_col].to_frame() # casting try: col_casted = selected_cols_df.fillna(0).astype('int32') cast_result[num_col] = True except: cast_result[num_col] = False col_casted = selected_cols_df test_columns_types[num_col] = getColumnsTypes( col_casted).popitem()[1] # LOG super().logDifferences_types(self.anagrafica.df, cast_result) self.assertEqual( test_columns_types, default_cols_int, "Selected columns [26, 28] must be np.dtype('int32')")
def test_acceptance_columnsTypes_obj(self): # Log to file self.logger.debug("\n\n### Test Acceptance Columns Object Type\n") # Seleziono le colonne dalle info del DB default_cols_obj = { i: col for i, col in self.default_columns_type.items() if 'obj' in str(col) } # seleziono le colonne tipo object selected_cols_df = self.anagrafica.df.iloc[:, list(default_cols_obj.keys( ))] test_columns_types = dict() cast_result = dict() for num_col in default_cols_obj.keys(): selected_cols_df = self.anagrafica.df.iloc[:, num_col].to_frame() # casting try: col_casted = selected_cols_df.astype('object') cast_result[num_col] = True except: cast_result[num_col] = False col_casted = selected_cols_df test_columns_types[num_col] = getColumnsTypes( col_casted).popitem()[1] # LOG super().logDifferences_types(self.anagrafica.df, cast_result) self.assertEqual(test_columns_types, default_cols_obj, "Selected columns must be np.dtype('object')")
def test_getColumnsTypes_right(self): datetimes = [ datetime(2019, 9, 30), datetime(2020, 2, 29), datetime(2018, 8, 30) ] test_data = { 'col0': ['casa', '000342', 'abcABC0123lk#'], 'col1': [0, 123, 9999999], 'col2': [0.2, 0.0002, 123.456], 'col3': [ np.datetime64(datetimes[0]), np.datetime64(datetimes[1]), np.datetime64(datetimes[2]) ] } test_df = pd.DataFrame(test_data) self.assertDictEqual( getColumnsTypes(test_df), { 0: np.dtype('O'), # object type 1: np.dtype('int64'), # signed integer 2: np.dtype('float64'), # float 3: np.dtype('<M8[ns]') # datetime }, "Error test getColumnsTypes")