POO, documentation et tests - TP2
Modules, style de code, exceptions et tests
Introduction
Créer l’arborscence
Vous pouvez créer chaque dossier et fichier à la main, ou utiliser dans un terminal Git Bash les commandes ci-dessous (mkdir : make directory):
# Sur la VM ensai
mkdir -p /p/Cours1A/IPOO/TP2/Exercice_{1..5}/ && touch /p/Cours1A/IPOO/TP2/Exercice_{1..5}/ex.py
# Sur un Datalab Onyxia
mkdir -p /home/onyxia/work/IPOO/TP2/Exercice_{1..5}/ && touch /home/onyxia/work/IPOO/TP2/Exercice_{1..5}/ex.py
Moodle
1 Cours
1.1 Linter Flake8
Flake8 est un Linter :
- Il analyse le code pour détecter des erreurs, des mauvaises pratiques ou des violations des règles de style
- Il ne modifie pas directement le code
- Il signale les problèmes pour que l’on puisse ensuite les corriger
Il existe également des formatters (Black, Ruff) qui à la différence des linters, modifient le code.
1.2 Tests Unitaires
cf. partie Cours
1.3 Exceptions
cf. partie Cours
2 Visual Studio Code
-
-
- dans votre Explorer à gauche apparait l’arborescence des dossiers et fichiers de Exercice_1
-
2.1 Settings
- icone ⚙️ en bas à droite > Settings
- options à activer :
- files.trimTrailingWhitespace
- files.insertFinalNewline
- files.trimFinalNewlines
- flake8.args
- Add item : –max-line-length=88
- editor.rulers : 88
- python.testing.pytestArgs
- Add item : –doctest-modules
2 niveaux :
- User : options appliquées au niveau global
- Workspace : réglages spécifiques pour l’espace de travail (dossier)
- création d’un fichier
.vscode/settings.json
(exportable) qui contient ces réglages
- création d’un fichier
3 Exercices
3.1 Exercice 1
3.2 Exercice 2
Les doctest vus au TP1 ne sont pas utilisés en pratique car cela surcharge les modules.
On préfère exporter les tests dans des modules à part.
3.3 Exercice 3
Aide
3.4 Exercice 4
- Inscription
-
Exemple pour lever une exception
if adresse_electronique.count('@') != 1: raise ValueError( "L'adresse électronique doit contenir un seul symbole @." )
-
-
base_de_donnees : list[tuple[str, str]]
4 Template doc
Voici un modèle que vous pouvez utiliser pour documenter vos fonctions
def ma_fonction(param1, param2=valeur_par_defaut) -> type_retour:
"""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