Pour réaliser ce TP, allez sur la branche 2_start_unit_test
git stash
git checkout 2_start_unit_test
Nouveauté sur cette branche :
L'objectif de ce TP est d'écrire quelques tests unitaires.
Pour écrire des tests, nous allons :
pytest
.tests
à la racine qui va contenir l'ensemble des teststest_feature_engineering.py
. En python la convention veut que les fichiers de tests :test_
.Créer une fonction test_process_name
selon le template suivant :
def test_process_name():
# Given
# When
# Then
Écrire le then
en premier, nous allons nous assurer que le résultat est bien celui attendu, en comparant 2 data
frames.
import pandas as pd
def test_process_name():
# Given
# When
# Then
pd.testing.assert_frame_equal(expected_df, result_df)
Commencez par le Then permet de s'assurer que l'on sait ce que l'on veut valider
Écrire le when
: l'appel à la fonction
import pandas as pd
from src.feature_engineering import process_name
def test_process_name():
# Given
# When
result_df = process_name(df)
# Then
pd.testing.assert_frame_equal(expected_df, result_df)
Finir par écrire le given
import pandas as pd
from src.feature_engineering import process_name
def test_process_name():
# Given
df = pd.DataFrame({"Name": ["Braund, Mr. Owen Harris"]})
expected_df = pd.DataFrame({"Name": ["Braund, Mr. Owen Harris"],
"Name_Len": [23],
"Name_Title": "Mr."})
# When
result_df = process_name(df)
# Then
pd.testing.assert_frame_equal(expected_df, result_df)
Pour écrire les données de tests, nous recommandons (si ce ne sont pas des données personnelles ou confidentielles) d'utiliser des données de la production.
Exécuter les tests en cliquant sur la petite flèche verte à côté du nom de la fonction
Pour vous exercer, écrivez 3 autres tests automatisés sur d'autres fonctions.
Les instructions du TP suivant sont ici