Unittests schrijven met pytest
In deze oefening ga je een unittest schrijven om een datapijplijn te valideren. Je gebruikt assert en andere tools om de tests op te zetten en te bepalen of de datapijplijn doet wat hij moet doen.
De functies extract() en transform() zijn voor je beschikbaar gemaakt, net als pandas, dat is geïmporteerd als pd. Je gaat de functie transform() testen, die hieronder staat.
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
Deze oefening maakt deel uit van de cursus
ETL en ELT in Python
Oefeninstructies
- Importeer de
pytest-bibliotheek. - Controleer met een assertie dat de waarde in de variabele
clean_tax_dataeen instantie is vanpd.DataFrame. - Valideer dat het aantal kolommen in de
clean_tax_data-DataFrame groter is dan het aantal kolommen in deraw_tax_data-DataFrame.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
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)