Skip to content

Commit

Permalink
FIX shape TP 2
Browse files Browse the repository at this point in the history
  • Loading branch information
TOUL committed Jul 24, 2023
1 parent cba3465 commit 0996c85
Showing 1 changed file with 53 additions and 51 deletions.
104 changes: 53 additions & 51 deletions TP_instructions/tp2.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,74 +31,76 @@ L'objectif de ce TP est d'écrire quelques tests unitaires.

Duration: 0:10:00

Pour écrire des tests, nous allons utiliser le framework `pytest`.
Pour écrire des tests, nous allons :

- Utiliser le framework `pytest`.
- Utiliser le format "Given / When / Then".
- Suivre le paradigme "assert first".

1. Créer un dossier `tests` à la racine qui va contenir l'ensemble des tests
2. Créer un fichier `test_feature_engineering.py`. En python la convention veut que les fichiers de tests :
- Soient préfixés par `test_`.
- Aient le même nom que le fichier contenant les fonctions à tester.
- 1 fichier de fonctions implique donc un fichier de test. Si vous ressentez le besoin de découper en plusieurs
fichiers de tests, c'est probablement qu'il faut découper le fichier contenant les fonctions également.

3. Pour écrire les tests, nous recommandons d'utiliser le format "Given / When / Then" et le paradigme "assert first"
1. Créer une fonction `test_process_name` selon le template suivant:
```python
def test_process_name():
# Given
3. Créer une fonction `test_process_name` selon le template suivant:
```python
def test_process_name():
# Given

# When
# When

# Then
```
2. Écrire le `then` en premier, nous allons nous assurer que le résultat est bien celui attendu, en comparant 2 data
frames.
```python
import pandas as pd
# Then
```
4. Écrire le `then` en premier, nous allons nous assurer que le résultat est bien celui attendu, en comparant 2 data
frames.
```python
import pandas as pd

def test_process_name():
# Given
def test_process_name():
# Given

# When
# 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
3. Écrire le `when` : l'appel à la fonction
```python
import pandas as pd
from src.feature_engineering import process_name
# 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
5. Écrire le `when` : l'appel à la fonction
```python
import pandas as pd
from src.feature_engineering import process_name

def test_process_name():
# Given
def test_process_name():
# Given

# When
result_df = process_name(df)
# When
result_df = process_name(df)

# Then
pd.testing.assert_frame_equal(expected_df, result_df)
```
4. Finir par écrire le `given`
```python
import pandas as pd
from src.feature_engineering import process_name
# Then
pd.testing.assert_frame_equal(expected_df, result_df)
```
6. Finir par écrire le `given`
```python
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)
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.
4. Exécuter les tests en cliquant sur la petite flèche verte à côté du nom de la fonction
# 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.
7. Exécuter les tests en cliquant sur la petite flèche verte à côté du nom de la fonction

## Écrire d'autres tests

Expand Down

0 comments on commit 0996c85

Please sign in to comment.