POO, documentation et tests - TP3
Structures hétérogènes de données et tests
1 Créer l’arborscence
└── P
└── Cours1A
└── IPOO
├── TP1
│ ├── Exercice_1
│ │ └── ex.py
│ ├── Exercice_2
│ │ └── ex.py
│ ├── ...
│ └── Exercice_7
│ └── ex.py
├── TP2
│ ├── Exercice_1
│ │ └── ex.py
│ ├── Exercice_2
│ ├── ...
Pour prendre la bonne habitude de bien ranger vos fichiers, vous allez créer l’arborscence ci-dessus. Vous pouvez créer chaque dossier et fichier à la main, ou utiliser les commandes ci-dessous (mkdir : make directory):
-
- Sur le bureau > clic droit > Git Bash here
-
mkdir -p /p/Cours1A/IPOO/TP3/Exercice_{1..4}/- dans Git Bash : clic droit > Paste ou MAJ + INSER
Utilisez le lecteur P:
Il est important de stocker vos fichiers dans votre lecteur P: et pas sur votre bureau ou votre disque C: car vos fichiers risqueraient de disparaitre !
2 Moodle
3 Visual Studio Code
-
-
- dans votre Explorer à gauche apparait l’arborescence des dossiers et fichiers de Exercice_1
-
4 Exercices
4.1 Exercice 1
- pour lancer les tests (en collant dans un terminal)
python -m pytest --doctest-modules
- ⚠️ dans une liste python, le premier élément est à l’index 0
- le dernier élément est à l’index
len(liste) - 1
- le dernier élément est à l’index
Parcourir des listes
liste = ["a", "b", "c", "d", "e"]
# Par index
for i in range(len(liste)):
print(f"index : {i}, valeur : {liste[i]}")
# Par valeurs
for v in liste:
print(v)
# Combiner index et valeurs
for i, v in enumerate(liste):
print(f"index : {i}, valeur : {v}")
Aide
- pour écrire les tests, voir TP2 > ex2
- importer un module ➡️ CM voir diapo 14
- commencer à l’index 3 :
liste[3:]
4.2 Exercice 2
Note
La fonction map(fonction, liste) permet d’appliquer une fonction à une liste (mais vous n’avez pas le droit de l’utiliser)
5 Template doc
Voici un modèle que vous pouvez utiliser pour documenter vos fonctions
def ma_fonction(param1, param2):
"""description_courte
description_longue
Parameters
----------
param1 : type (str, int, float, list...)
description_param1
param2 : type
description_param2
Returns
-------
type_retour
description_retour
Examples
--------
>>> 1+1
2
>>> print("abc")
abc
>>> ma_fonction(xxx, yyy)
valeur_esperee
"""
return None
if __name__ == '__main__':
a = ma_fonction(p1, p2)
print(a)6 Template pytest
import pytest
from mon_fichier import ma_fonction
@pytest.mark.parametrize(
'param1, param2, resultat_attendu',
[
(1, 1, 2),
(1, 2, 3),
(2, 2, 4)
]
)
def test_ma_fonction(param1, param2, resultat_attendu):
assert ma_fonction(param1, param2) == resultat_attendu