Description
This is the sister-issue for Series of #22471 (for frames), where the review in #22236 requested:
ok, pls open a new issue that refs this, to remove use of
TestData
in favor of fixtures
For Series, this process is started by #22526 by creating a conftest.py
that translates all the current attributes of TestData
to fixtures, with the following "translation guide":
ts
->datetime_series
series
->string_series
objSeries
->object_series
empty
->empty_series
Need to incrementally replace their usages in pandas/tests/series/
(example below).
- Create
conftest.py
and translateTestData
-attributes into fixtures and renaming them them as outlined above (TST: fixturize series/test_alter_axes.py #22526) -
test_alter_axes.py
(TST: fixturize series/test_alter_axes.py #22526) -
test_analytics.py
(TST: Fixturize series/test_analytics.py #22755) -
test_api.py
(Remove TestData from series-tests test_api.py #29153) -
test_apply.py
(TST: Fixturize series/test_apply.py #22769) -
test_asof.py
(TST: Fixturize series/test_asof.py #22772) -
test_combine_concat.py
(TST: Fixturize series/test_combine_concat.py #22964) -
test_constructors.py
(TST: Fixturize series/test_constructors.py #22965) -
test_datetime_values.py
(TST: Fixturize series/test_datetime_values.py #22966) -
test_dtypes.py
(TST: Fixturize series/test_dtypes.py #22967) -
test_io.py
(TST: Fixturize series/test_io.py #22972) -
test_missing.py
(TST: Fixturize series/test_missing.py #22973) -
test_operators.py
([#22550] Remove TestData from series-tests test_operators.py #29084) -
test_quantile.py
([#22550] Remove TestData from series-tests test_quantile.py #29096) -
test_rank.py
([#22550] Remove TestData from series-tests test_rank.py #29101) -
test_replace.py
(Remove TestData from series-tests test_replace.py #29147) -
test_repr.py
(Remove TestData from series-tests test_repr.py #29148) -
test_sorting.py
(Remove TestData from series-tests test_sorting.py #29149) -
test_timeseries.py
(Remove TestData from series-tests test_timeseries.py #29150) -
test_validate.py
(TST: Fixturize series/test_validate.py #22756)
Things for follow-ups:
- Remove other class-based test-methods
- Turn tests from class- to function-based
An example from #22526 - before:
def test_rename_inplace(self):
renamer = lambda x: x.strftime('%Y%m%d')
expected = renamer(self.ts.index[0])
self.ts.rename(renamer, inplace=True)
assert self.ts.index[0] == expected
After:
def test_rename_inplace(self, datetime_series):
renamer = lambda x: x.strftime('%Y%m%d')
expected = renamer(datetime_series.index[0])
datetime_series.rename(renamer, inplace=True)
assert datetime_series.index[0] == expected
Basically, it comes down to replacing all the occurrences of self.<name>
with translation_guide[<name>]
(and specifying the latter as a parameter to the function).
PS. Note that some fixtures added by #22526 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.