TST/CLN: remove TestData from frame-tests; replace with fixtures · Issue #22471 · pandas-dev/pandas (original) (raw)
Navigation Menu
- Explore
- Pricing
Provide feedback
Saved searches
Use saved searches to filter your results more quickly
Appearance settings
Description
Following review in #22236:
ok, pls open a new issue that refs this, to remove use of
TestData
in favor of fixtures
Started the process in that PR by creating a conftest.py
that translates all the current attributes of TestData
to fixtures, with the following "translation guide":
frame
->float_frame
frame2
->float_frame2
intframe
->int_frame
tsframe
->datetime_frame
mixed_frame
->float_string_frame
mixed_float
->mixed_float_frame
mixed_float2
->mixed_float_frame2
mixed_int
->mixed_int_frame
all_mixed
->mixed_type_frame
tzframe
->timezone_frame
empty
->empty_frame
ts1
->datetime_series
ts2
->datetime_series_short
simple
->simple_frame
Need to incrementally replace their usages in pandas/tests/frame/
(example below).
- Create
conftest.py
and translateTestData
-attributes into fixtures (TST/CLN: break up & parametrize tests for df.set_index #22236) test_alter_axes.py
(TST/CLN: break up & parametrize tests for df.set_index #22236)test_analytics.py
(TST/CLN: Fixturize frame/test_analytics #22733)test_api.py
(Fixturize tests/frame/test_api and tests/sparse/frame/test_frame #22738)test_apply.py
(Fixturize tests/frame/test_apply #22735)test_arithmetic.py
(Fixturize tests/frame/test_arithmetic #22736)test_asof.py
(Fixturize tests/frame/test_asof.py #25628)test_axis_select_reindex.py
(Fixturize tests/frame/test_axis_select_reindex.py #25627)test_block_internals.py
(TST/CLN: Fixturize tests/frame/test_block_internals.py #22926)test_combine_concat.py
(Fixturize tests/frame/test_combine_concat.py #25634)test_constructors.py
(Fixturize tests/frame/test_constructors.py #25635)test_convert_to.py
test_dtypes.py
(Fixturize tests/frame/test_dtypes.py #25636)test_duplicates.py
test_indexing.py
(Fixturize tests/frame/test_indexing.py #25633)test_join.py
(Fixturize tests/frame/test_join.py #25639)test_missing.py
(TST: Fixturize tests/frame/test_missing.py #25640)test_mutate_columns.py
(Fixturize tests/frame/test_mutate_columns.py #25642)test_nonunique_indexes.py
test_operators.py
(Fixturize tests/frame/test_operators.py #25641)test_period.py
test_quantile.py
test_query_eval.py
test_rank.py
test_replace.py
test_repr_info.py
test_reshape.py
test_sort_values_level_as_str.py
test_sorting.py
test_subclass.py
test_timeseries.py
test_timezones.py
test_to_csv.py
test_validate.py
Things for follow-ups:
- Remove other class-based test-methods
- Turn tests from class- to function-based
An example from #22236 - before:
def test_set_columns(self):
cols = Index(np.arange(len(self.mixed_frame.columns)))
self.mixed_frame.columns = cols
with tm.assert_raises_regex(ValueError, 'Length mismatch'):
self.mixed_frame.columns = cols[::2]
After:
def test_set_columns(self, float_string_frame):
cols = Index(np.arange(len(float_string_frame.columns)))
float_string_frame.columns = cols
with tm.assert_raises_regex(ValueError, 'Length mismatch'):
float_string_frame.columns = cols[::2]
Basically, it comes down to replacing all the occurrences of self.<name>
with translation_guide[<name>]
(and specifying<name>
as a parameter to the function).
PS. Note that some fixtures added by #22236 have now been removed by #24885. Please check #24885 which code was removed, in case you should need it for the fixturisation. Alternatively, you can ping me, @jbrockmendel or @jreback.