0% ont trouvé ce document utile (0 vote)
12 vues5 pages

Tests unitaires avec pytest en Python

Le document décrit un TP sur les tests unitaires avec pytest, incluant la mise en place d'un environnement de travail et l'installation de pytest. Il présente plusieurs exercices, chacun demandant de créer des fonctions et des tests pour des opérations spécifiques, comme le calcul de rendements ou la gestion de comptes bancaires. Des instructions détaillées sont fournies pour l'utilisation de fixtures et l'écriture de tests pour valider le bon fonctionnement des fonctions créées.

Transféré par

Catm
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
12 vues5 pages

Tests unitaires avec pytest en Python

Le document décrit un TP sur les tests unitaires avec pytest, incluant la mise en place d'un environnement de travail et l'installation de pytest. Il présente plusieurs exercices, chacun demandant de créer des fonctions et des tests pour des opérations spécifiques, comme le calcul de rendements ou la gestion de comptes bancaires. Des instructions détaillées sont fournies pour l'utilisation de fixtures et l'écriture de tests pour valider le bon fonctionnement des fonctions créées.

Transféré par

Catm
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

R4.

01-Automatisation et test en programmation Semestre 4

TP2- Tests unitaires avec pytest


Mise en place de l’environnement de travail :
1- Créer un dossier nommé: tp2_tests, puis deux répertoires nommés : tests et
fonctions. Dans tests, on crée le fichier « test_mes_fonctions.py », et dans
fonctions, on crée le fichier « mes_fonctions.py ».
Pour informer Python que tests et fonctions sont des packages (pouvant contenir
des modules à partir desquelles on peut importer des fonctions) et résoudre les
problèmes d’accès à leur contenu, vous allez ajouter à chaque répertoire un fichier
vide dont le nom est __init__.py (__ sont deux underscores).

Sur ECampus, télécharger le fichier « fonctions_a_tester.py », puis copier toutes


les fonctions qui s’y trouvent dans « mes_fonctions.py ».

2- Sous VS Code, lancer un terminal et se déplace à l’intérieur de tp2_tests avec :


cd chemin_vers_dossier_tp2_tests
ou ouvrir directement le répertoire tp2_tests sous VS Code.
3- Pour installer pytest, on a besoin de créer et d’activer un environnement virtuel.
Un environnement virtuel est une technique permettant d'isoler et de gérer les
dépendances logicielles d'un projet particulier, en créant un espace de travail
indépendant où on installe des bibliothèques, des packages et des versions spécifiques
de logiciels nécessaires à ce projet sans interférer avec d'autres projets ou le système
global de l’ordinateur. Voici les étapes à suivre :
→ Étape 1 : créer l'environnement avec python -m venv envTests
On utilise le module venv (-m pour module) pour créer un environnement nommé
envTests (vous pouvez choisir un nom de votre choix).

→ Étape 2 : activer en tapant .\envTests\Scripts\activate


pour le désactiver: .\envFlask\Scripts\deactivate
-Si sous Mac pour l'activer: source envFlask/bin/activate et deactivate
pour le désactiver.
-Si conda est installé: conda create -n envTests, pour l'activer : source
activate envTests, et pour le désactiver conda deactivate
Il est à noter que conda est un système de gestion d'environnements qui fonctionne
sur Windows, macOS et Linux.

→ Étape 3 : on vérifie d'abord que l'environnement est activé, ensuite on utilise


pip (Pip Installs Packages : un gestionnaire de paquets pour Python) pour installer
pytest : pip install pytest/conda install pytest

TP2-Tests avec pytest 1/5


R4.01-Automatisation et test en programmation Semestre 4

Pour lister toutes les bibliothèques installées, on tape : pip list


Pour tester si pytest marche bien, taper:
>> python --> pour lancer l'interpréteur Python
>> import pytest (importation devra passer sans erreur)
>> quit() --> pour quitter l'interpréteur Python

Remarque : Pour supprimer un environnement:


--> Sans conda: rm -rf chemin_vers_envTests (-rf veut dire
forcer la suppression des dossiers et fichiers)
--> Avec conda: conda remove --name envTests –all
(--all: supprime tous les modules)

Exercice 1 : Tests avec pytest


1- Soit la fonction calculer_rendement_quotidien(prix_ouv, prix_ferm) qui
prend deux arguments : prix_ouv et prix_ferm (le prix d'ouverture et de clôture d’une
action). La fonction renvoie la valeur du taux de rendement quotidien (en pourcentage).

Ajouter les trois fonctions de test suivantes :


→test_rendement_positif() qui vérifie si
calculer_rendement_quotidien(238.0, 250.0) renvoie le taux de rendement
quotidien de 5.04 %.
→test_rendement_negatif() qui vérifie si
calculer_rendement_quotidien(238.0, 230.0) renvoie le taux de rendement
quotidien de -3.36 %.
→test_rendement_nul() qui vérifie si calculer_rendement_quotidien(238.0,
238.0) renvoie le taux de rendement quotidien de 0.00 %.
Lancer vos tests pour vérifier s’ils passent ou non.

2- Soit la fonction trier_liste(liste) qui prend en paramètre une liste (nombres ou


chaines de caractères) et qui renvoie la liste triée dans l’ordre croissant.
Ajouter les trois fonctions de test suivantes :
-test_tri_liste_vide() qui teste si la fonction trie correctement une liste vide
-test_tri_liste_un_elt() qui teste si la fonction trie correctement une liste
contenant un nombre.
-test_tri_liste_plusieurs_elts()qui teste si la fonction trie correctement une
liste de plusieurs nombres et une liste de plusieurs chaines de caractères.
Lancer vos tests pour vérifier s’ils passent ou non.

TP2-Tests avec pytest 2/5


R4.01-Automatisation et test en programmation Semestre 4

3- Soit la fonction calculer(nombres, operateur) qui prend en arguments : une


liste de nombres et un opérateur (caractère : +, -, / ou *) et qui renvoie une valeur
numérique qui représente le résultat de l’opération appliquée sur la liste des nombres.
→ Pour chaque opération, décrire ce que renvoie la fonction.
→ ajouter les fonctions de test suivantes :
- test_erreur_type_si_premier_arg_pas_lst() vérifie si la fonction génère une
erreur de type (TypeError) si le premier argument n'est pas une liste.
-test_erreur_val_si_second_arg_pas_op_valide() vérifie si la fonction génère
une erreur de valeur (ValueError) si le deuxième argument n'est pas une chaîne valide
(par exemple, "+", "-", "*", "/").
-test_addition_correcte() vérifie si la fonction effectue correctement l’opération
d’addition.
-test_soustraction_correcte() vérifie si la fonction effectue correctement
l’opération de soustraction.
-test_multiplication_correcte() vérifie si la fonction effectue correctement
l’opération de multiplication.
-test_division_correcte() vérifie si la fonction effectue correctement l’opération de
division.
-test_erreur_division_par_0() vérifie si la fonction génère une erreur de division
par zéro (ZeroDivisionError) en cas de tentative de division par zéro.
Lancer vos tests pour vérifier s’ils passent ou non.

4- Soit la fonction est_mdp_valide(mdp) qui prend en argument une chaine de


caractères (mot de passe) et renvoie True si mdp est valide et False sinon.
-étudier le code de la fonction et donner les conditions pour qu’un mot de passe soit
valide.
-ajouter les fonctions de test suivantes :
-test_mdp_valide() vérifie si la fonction renvoie True lorsque le mot de passe saisi
est valide.
-test_mdp_court() vérifie si la fonction renvoie False lorsque le mot de passe saisi
est court.
-test_mdp_pas_digits() vérifie si la fonction renvoie False lorsque le mot de
passe saisi ne contient pas de chiffres.
-test_mdp_pas_minuscules() vérifie si la fonction renvoie False lorsque le mot de
passe saisi ne contient pas de minuscules.
-test_mdp_pas_majuscules() vérifie si la fonction renvoie False lorsque le mot de
passe saisi ne contient pas de majuscules.

TP2-Tests avec pytest 3/5


R4.01-Automatisation et test en programmation Semestre 4

5- Soit la fonction generer_mdp(n) qui prend en argument un entier n et qui renvoie un


mot de passe aléatoire de longueur n composé de lettres majuscules, de lettres
minuscules et de chiffres.
-étudier le code de la fonction et expliquer comment le mot de passe est composé.
-ajouter la fonction de test suivante : test_generer_mdp() qui vérifie que le mot
de passe le mot de passe a une longueur de 10 caractères, et qu'il contient au moins
une lettre majuscule, une lettre minuscule et un chiffre. Il faut insérer 4 assertions
dans la solution.

Exercice 2 : Fixtures avec pytest


1- Soient les fonctions suivantes : creer_compte(num_compte, solde,
type_compte), deposer(compte, montant), retirer(compte, montant) et
transferer(compte_source, montant, compte_destination)permettant de
gérer les opérations d’un compte bancaire.

a- Créer deux fixtures appelées compte1 et compte2 dont les caractéristiques sont :
-compte1 : courant de N° 111C et contenant 1000 euros
-compte2 : épargne de N° 555E et contenant 500 euros

b-Écrire une fonction test_deposer() qui utilise la fixture compte1 et qui vérifie le
dépôt de 500 euros.

c- Écrire une fonction test_retirer() qui utilise la fixture compte1 et qui vérifie le
dépôt de 500 euros .

d- Écrire une fonction test_trasferer() qui utilise les fixtures compte1 et


compte2 qui vérifie le transfère de 500 euros du compte N°1 vers le compte N°2.

e- Écrire deux fonctions test_retrait_solde_insuffisant() et


test_transfert_solde_insuffisant() qui teste une tentative de retrait et de
transfert avec un solde insuffisant.
Visualiser l’exécution des fixtures avec pytest --setup-show

2-Soient les fonctions creer_conteneur(categorie) et


afficher_conteneur(conteneur):
qui crée un contenir d’une catégorie donnée et l’affiche
a- Créer une fixture conteneur_plastique() permettant de créer un conteneur
en plastique.

TP2-Tests avec pytest 4/5


R4.01-Automatisation et test en programmation Semestre 4

b- Écrire une fonction test_methode_init() qui utilise la fixture précédente et qui


permet de vérifier si la clé et la valeur sont celles de la fixture.
c-Écrire une fonction test_methode_repr() qui utilise la fixture précédente et qui
permet de vérifier la représentation textuelle.

TP2-Tests avec pytest 5/5

Vous aimerez peut-être aussi