-
-
Notifications
You must be signed in to change notification settings - Fork 19.3k
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
TestDatain 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_seriesseries->string_seriesobjSeries->object_seriesempty->empty_series
Need to incrementally replace their usages in pandas/tests/series/ (example below).
- Create
conftest.pyand 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.