Slide 14
Slide 14 text
- テストが必要な関数はstaticmethodやclassmethodに切り出す
class PreprocessTask(GokartTask):
data_task = gokart.TaskInstanceParameter()
def requires(self) -> gokart.TaskInstanceParameter:
return self.data_task
@staticmethod
def make_area(length: pd.Series, width: pd.Series) -> pd.Series:
return length * width
@pa.check_types
def add_area_feature(self, data: DataFrame[IrisFeatureSchema]) ->
DataFrame[PreprocessedSchema]:
# 花びらの面積を新たな特徴量として追加
data["petal_area"] = self.make_area(data["petal_length"],
data["petal_width"])
return data
def run(self) -> None:
data = self.load_data_frame()
df = self.add_area_feature(data=data)
self.dump(df)
staticmethodでテストをする
class TestMakeAreaTask:
@pytest.mark.parametrize(
("length", "width", "expect"),
[
(
pd.Series([2.0, 4.0, 6.0]),
pd.Series([1.0, 2.0, 3.0]),
pd.Series([2.0, 8.0, 18.0])
)
],
)
def test_make_area(
self,
length: pd.Series,
width: pd.Series,
expect: pd.Series
) -> None:
actual = PreprocessTask.make_area(length, width)
assert actual.equals(expect)