pytest でユニットテストを書く
この演習では、データパイプラインを検証するユニットテストの作成を練習します。assert などのツールを使ってテストを構築し、データパイプラインが期待どおりに動作しているかを判断します。
pandas(pd としてインポート済み)に加えて、extract() と transform() の関数が用意されています。ここでは、以下に示す transform() 関数をテストします。
def transform(raw_data):
raw_data["average_taxable_income"] = raw_data["total_taxable_income"] / raw_data["number_of_firms"]
clean_data = raw_data.loc[raw_data["average_taxable_income"] > 100, :]
clean_data.set_index("industry_name", inplace=True)
return clean_data
この演習はコースの一部です
Python で学ぶ ETL と ELT
演習の手順
pytestライブラリをインポートします。clean_tax_data変数に格納された値がpd.DataFrameのインスタンスであることをアサートします。clean_tax_dataDataFrame の列数が、raw_tax_dataDataFrame に含まれる列よりも多いことを検証します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
import ____
def test_transformed_data():
raw_tax_data = extract("raw_tax_data.csv")
clean_tax_data = transform(raw_tax_data)
# Assert that the transform function returns a pd.DataFrame
assert ____(clean_tax_data, pd.DataFrame)
# Assert that the clean_tax_data DataFrame has more columns than the raw_tax_data DataFrame
____ len(clean_tax_data.columns) ____ len(raw_tax_data.columns)