始める無料で始める

pytest を使ったユニットテストの作成

この演習では、データパイプラインを検証するユニットテストの書き方を練習します。assert などのツールを使ってテストを作成し、データパイプラインが想定通りに機能しているかどうかを判断します。

関数 extract() と transform() は、すでに使用できる状態になっています。また pandas も pd としてインポート済みです。ここでは、以下に示す 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 のインスタンスであることを assert で検証しましょう。
  • clean_tax_data DataFrame の列数が、raw_tax_data DataFrame の列数より多いことを検証しましょう。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

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)
コードを編集して実行