Skip to content

Commit 977ebd5

Browse files
Test: Mise à jour des tests unitaires après la mise en place de PEP8
- Mise à jour des tests unitaires suite à la modification du code pour être conforme avec PEP8
1 parent 88aafa3 commit 977ebd5

7 files changed

Lines changed: 288 additions & 22 deletions

tests/conftest.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,8 +113,8 @@ def parseur_log_apache(log_apache, request):
113113
ParseurLogApache: Une instance de la classe :class:`ParseurLogApache`.
114114
"""
115115
if hasattr(request, "param") and request.param == False:
116-
return ParseurLogApache(log_apache(False))
117-
return ParseurLogApache(log_apache(True))
116+
return ParseurLogApache(str(log_apache(False)))
117+
return ParseurLogApache(str(log_apache(True)))
118118

119119
@pytest.fixture()
120120
def fichier_log_apache(parseur_log_apache):

tests/test_afficheur_cli.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,23 @@ def test_afficheur_cli_lance_animation_chargement(mocker, afficheur_cli):
169169
assert afficheur_cli._thread_chargement is not None
170170
assert afficheur_cli._thread_chargement.is_alive()
171171

172+
def test_afficheur_cli_exception_stop_animation_chargment_type_invalide(afficheur_cli):
173+
"""
174+
Vérifie que la méthode stop_animation_chargement renvoie une erreur lorsque le type
175+
de son paramètre est invalide.
176+
177+
Scénarios testés:
178+
- Paramètre ``erreur`` avec un mauvais type.
179+
180+
Asserts:
181+
- Une exception :class:`TypeError` est levée.
182+
183+
Args:
184+
afficheur_cli (AfficheurCLI): Fixture pour l'instance de la classe ``AfficheurCLI``.
185+
"""
186+
with pytest.raises(TypeError):
187+
afficheur_cli.stop_animation_chargement("False")
188+
172189
def test_afficheur_cli_stop_animation_chargement_terminee(afficheur_cli):
173190
"""
174191
Vérifie que la méthode stop_animation_chargement arrête correctement l'animation en

tests/test_exporteur.py

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,27 @@ def test_exporteur_emplacement_inexistant():
4040
with pytest.raises(ExportationException):
4141
exporteur = Exporteur("dossier/inexistant/sortie.json")
4242

43+
def test_exporteur_verification_exception_exportation_possible_type_invalide(exporteur):
44+
"""
45+
Vérifie que la méthode verification_exportation_possible renvoie une erreur lorsque le type
46+
de son paramètre est invalide.
47+
48+
Scénarios testés:
49+
- Paramètre ``chemin_sortie`` avec un mauvais type.
50+
51+
Asserts:
52+
- Une exception :class:`TypeError` est levée.
53+
54+
Args:
55+
exporteur (Exporteur) : Fixture pour l'instance de la classe :class:`Exporteur`.
56+
"""
57+
with pytest.raises(TypeError):
58+
exporteur.verification_exportation_possible(False)
59+
4360
@pytest.mark.parametrize("donnees", [
4461
(0), (None), ([])
4562
])
46-
def test_exportateur_export_json_type_donnees_invalide(exporteur, donnees):
63+
def test_exporteur_export_json_type_donnees_invalide(exporteur, donnees):
4764
"""
4865
Vérifie que la classe renvoie une erreur lorsque un argument de type invalide
4966
est passé dans la méthode ``export_vers_json``.
@@ -66,7 +83,7 @@ def test_exportateur_export_json_type_donnees_invalide(exporteur, donnees):
6683
(FileNotFoundError("Fichier non trouvé.")),
6784
(Exception("Toutes exceptions"))
6885
])
69-
def test_exportateur_export_json_exception_exportation(exporteur, mocker, exception):
86+
def test_exporteur_export_json_exception_exportation(exporteur, mocker, exception):
7087
"""
7188
Vérifie que la classe renvoie l'exception :class:`ExportationException` lorsque
7289
une erreur apparait durant l'exportation des données.
@@ -88,7 +105,7 @@ def test_exportateur_export_json_exception_exportation(exporteur, mocker, except
88105
with pytest.raises(ExportationException):
89106
exporteur.export_vers_json({})
90107

91-
def test_exportateur_exportation_json_valide(exporteur, fichier_json):
108+
def test_exporteur_exportation_json_valide(exporteur, fichier_json):
92109
"""
93110
Vérifie que la méthode ``export_vers_json`` exporte correctement les données
94111
vers une fichier.
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
"""
2+
Module des tests unitaires pour la classe de représentation d'un fichier de log
3+
ou celle d'une entrée d'un log.
4+
"""
5+
6+
import pytest
7+
from datetime import datetime
8+
from parse.fichier_log_apache import FichierLogApache
9+
from parse.entree_log_apache import EntreeLogApache
10+
from donnees.client_informations import ClientInformations
11+
from donnees.requete_informations import RequeteInformations
12+
from donnees.reponse_informations import ReponseInformations
13+
14+
15+
@pytest.mark.parametrize("chemin, entrees", [
16+
(False, []),
17+
("Chemin", False)
18+
])
19+
def test_fichier_log_exception_type_invalide(chemin, entrees):
20+
"""
21+
Vérifie que l'initialisation d'un FichierLogApache renvoie une erreur lorsque le type
22+
de son paramètre est invalide.
23+
24+
Scénarios testés:
25+
- Paramètre ``chemin`` avec un mauvais type.
26+
- Paramètre ``entrees`` avec un mauvais type.
27+
28+
Asserts:
29+
- Une exception :class:`TypeError` est levée.
30+
31+
Args:
32+
chemin (any): Le chemin du fichier.
33+
entrees (any): Les entrées du fichier.
34+
"""
35+
with pytest.raises(TypeError):
36+
fichier = FichierLogApache(chemin, entrees)
37+
38+
def test_fichier_log_exception_ajoute_entree_type_invalide(fichier_log_apache):
39+
"""
40+
Vérifie que la méthode ajoute_entree retourne une erreur lorsque son paramètre
41+
n'est pas du type attendu.
42+
43+
Scénarios testés:
44+
- Paramètre ``entree`` avec un mauvais type.
45+
46+
Asserts:
47+
- Une exception :class:`TypeError` est levée.
48+
49+
Args:
50+
fichier_log_apache (FichierLogApache): Fixture pour l'instance
51+
de la classe :class:`FichierLogApache`.
52+
"""
53+
with pytest.raises(TypeError):
54+
fichier_log_apache.ajoute_entree(False)
55+
56+
@pytest.mark.parametrize("client, requete, reponse", [
57+
(False,
58+
RequeteInformations(datetime(1, 1, 1), "GET", "/", "HTTP/1.1", "/"),
59+
ReponseInformations(0, 0)),
60+
(ClientInformations("1.1.1.1", "RFC", "test", "google"),
61+
False,
62+
ReponseInformations(0, 0)),
63+
(ClientInformations("1.1.1.1", "RFC", "test", "google"),
64+
RequeteInformations(datetime(1, 1, 1), "GET", "/", "HTTP/1.1", "/"),
65+
False)
66+
])
67+
def test_entree_log_exception_type_invalide(client, requete, reponse):
68+
"""
69+
Vérifie que l'initialisation d'un EntreeLogApache renvoie une erreur lorsque le type
70+
de son paramètre est invalide.
71+
72+
Scénarios testés:
73+
- Paramètre ``client`` avec un mauvais type.
74+
- Paramètre ``requete`` avec un mauvais type.
75+
- Paramètre ``reponse`` avec un mauvais type.
76+
77+
Asserts:
78+
- Une exception :class:`TypeError` est levée.
79+
80+
Args:
81+
client (any): Les informations du client sur cette entrée.
82+
requete (any): Les informations de la requête sur cette entrée.
83+
reponse (any): Les informations de la réponse sur cette entrée.
84+
"""
85+
with pytest.raises(TypeError):
86+
entree = EntreeLogApache(client, requete, reponse)

tests/test_main.py

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,25 @@
33
"""
44

55
import pytest
6-
import sys
76
from main import main
87
from cli.parseur_arguments_cli import ArgumentCLIException
98
from parse.parseur_log_apache import FormatLogApacheInvalideException
109
from export.exporteur import ExportationException
1110

12-
@pytest.mark.parametrize("exception", [
13-
(ArgumentCLIException),
14-
(FileNotFoundError),
15-
(FormatLogApacheInvalideException),
16-
(ExportationException),
17-
(Exception)
18-
])
11+
12+
@pytest.mark.parametrize(
13+
"exception",
14+
[
15+
(ArgumentCLIException),
16+
(FormatLogApacheInvalideException),
17+
(ExportationException),
18+
(TypeError),
19+
(ValueError),
20+
],
21+
)
1922
def test_main_gestion_exception(mocker, exception):
2023
"""
21-
Vérifie que les exceptions sont interceptées dans fichier principal.
24+
Vérifie que les exceptions attendues sont interceptées dans fichier principal.
2225
2326
Scénarios testés:
2427
- Vérification que les exceptions n'arrête pas le programme.
@@ -45,18 +48,22 @@ def test_main_succes(mocker):
4548
"""
4649
# Mock des classes pour simuler un fonctionnement correct
4750
mock_parseur_cli = mocker.patch("main.ParseurArgumentsCLI")
48-
mock_parseur_cli.return_value.parse_args.return_value = mocker.MagicMock(chemin_log="test.log")
49-
51+
mock_parseur_cli.return_value.parse_args.return_value = mocker.MagicMock(
52+
chemin_log="test.log"
53+
)
54+
5055
mock_parseur_log = mocker.patch("main.ParseurLogApache")
5156
mock_parseur_log.return_value.parse_fichier.return_value = mocker.MagicMock()
52-
57+
5358
mock_analyseur_log = mocker.patch("main.AnalyseurLogApache")
54-
mock_analyseur_log.return_value.get_analyse_complete.return_value = {"chemin": "test.log"}
59+
mock_analyseur_log.return_value.get_analyse_complete.return_value = {
60+
"chemin": "test.log"
61+
}
5562

5663
mocker.patch("main.Exporteur")
57-
64+
5865
# Vérifie qu'aucune exception n'est levée
5966
try:
6067
main()
6168
except Exception:
62-
pytest.fail("Aucune exception ne doit être levée ici")
69+
pytest.fail("Aucune exception ne doit être levée ici")

tests/test_parseur_arguments_cli.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,31 @@
3636

3737
# Tests unitaires
3838

39+
@pytest.mark.parametrize("args, namespace", [
40+
(False, None),
41+
(None, False)
42+
])
43+
def test_parseur_cli_exception_parse_args_type_invalide(parseur_arguments_cli, args, namespace):
44+
"""
45+
Vérifie que la méthode parse_args renvoie une erreur lorsque le type
46+
d'un de ses paramètres est invalide.
47+
48+
Scénarios testés:
49+
- Paramètre ``args`` avec un mauvais type.
50+
- Paramètre ``namespace`` avec un mauvais type.
51+
52+
Asserts:
53+
- Une exception :class:`TypeError` est levée.
54+
55+
Args:
56+
parseur_arguments_cli (ParseurArgumentsCLI): Fixture pour l'instance
57+
de la classe :class:`ParseurArgumentsCLI`.
58+
args (Optional[list]): Une liste avec des arguments.
59+
namespace (Optional[Namespace]): L'espace de nom où stocker les arguments.
60+
"""
61+
with pytest.raises(TypeError):
62+
parseur_arguments_cli.parse_args(args, namespace)
63+
3964
@pytest.mark.parametrize("arguments", arguments_invalides)
4065
def test_parseur_cli_exception_argument_inconnu(parseur_arguments_cli, arguments):
4166
"""

0 commit comments

Comments
 (0)