def test_ignore_indices_invalid(self, df1, value): ''' When other value than 0 or 1 in ignore_indices, raise ValueError ''' with pytest.raises(ValueError) as ex: df_.equals(df1, df1, ignore_indices=value) assert 'ignore_indices' in str(ex.value) assert str(value) in str(ex.value)
def assert_(self, df1, df2, expected, **equals_args): dfs = [df1, df2] dfs_orig = [df.copy() for df in dfs] actual = df_.equals(*dfs, _return_reason=True, **equals_args) for df, df_orig in zip(dfs, dfs_orig): # input unchanged assert df.equals(df_orig) assert df.index.name == df_orig.index.name assert df.columns.name == df_orig.columns.name assert actual[0] == expected, actual[1]
def _equals(series1, series2, ignore_order, ignore_index, all_close): if not ignore_index: if series1.name != series2.name: return False, 'Series name differs: {!r} != {!r}'.format(series1.name, series2.name) return df_.equals( series1.to_frame(), series2.to_frame(), ignore_order={0} if ignore_order else set(), ignore_indices={0} if ignore_index else set(), all_close=all_close, _return_reason=True #TODO the reasons will be about dataframes, this is confusing. May need to copy paste after all and do the analog for a series. Or add an internal param so it outputs series info (pick the former option) )
def test_return_reason(self, df1): ''' When not return_reason, return only a bool ''' assert df_.equals(df1, df1)