-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathtest_myutils.py
More file actions
135 lines (113 loc) · 4.22 KB
/
Copy pathtest_myutils.py
File metadata and controls
135 lines (113 loc) · 4.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
import pytest
import subprocess
try:
# Exécution depuis le repo parent Beancount-Perso
from myTools.myutils import (
TRADUCTIONS_MOIS,
is_pdfminer_installed,
pdf_to_text,
traduire_mois,
)
except ModuleNotFoundError:
# Exécution depuis le repo Beancount-myTools lui-même
from myutils import (
TRADUCTIONS_MOIS,
is_pdfminer_installed,
pdf_to_text,
traduire_mois,
)
"""
Tests pour le module myutils.py.
Ce fichier contient des tests unitaires pour les fonctions du module myutils.py,
utilisant le framework pytest.
Classes de test:
TestIsPdfminerInstalled: Tests pour la fonction is_pdfminer_installed
TestPdfToText: Tests pour la fonction pdf_to_text
TestTraduireMois: Tests pour la fonction traduire_mois
"""
class TestIsPdfminerInstalled:
"""
Tests pour la fonction is_pdfminer_installed.
"""
def test_pdfminer_installed(self, monkeypatch):
"""
Teste le cas où pdfminer est installé.
Args:
monkeypatch: Fixture pytest pour modifier temporairement le comportement.
"""
def mock_run(*args, **kwargs):
return subprocess.CompletedProcess(args=args, returncode=0)
monkeypatch.setattr(subprocess, "run", mock_run)
assert is_pdfminer_installed() == True
def test_pdfminer_not_installed(self, monkeypatch):
"""
Teste le cas où pdfminer n'est pas installé.
Args:
monkeypatch: Fixture pytest pour modifier temporairement le comportement.
"""
def mock_run(*args, **kwargs):
raise FileNotFoundError()
monkeypatch.setattr(subprocess, "run", mock_run)
assert is_pdfminer_installed() == False
class TestPdfToText:
"""
Tests pour la fonction pdf_to_text.
"""
def test_successful_conversion(self, monkeypatch):
"""
Teste une conversion PDF réussie.
Args:
monkeypatch: Fixture pytest pour modifier temporairement le comportement.
"""
def mock_run(*args, **kwargs):
return subprocess.CompletedProcess(args=args, returncode=0, stdout="Texte converti")
monkeypatch.setattr(subprocess, "run", mock_run)
assert pdf_to_text("test.pdf") == "Texte converti"
def test_failed_conversion(self, monkeypatch):
"""
Teste une conversion PDF échouée.
Args:
monkeypatch: Fixture pytest pour modifier temporairement le comportement.
"""
def mock_run(*args, **kwargs):
raise subprocess.CalledProcessError(1, args, stderr="Erreur de conversion")
monkeypatch.setattr(subprocess, "run", mock_run)
with pytest.raises(ValueError, match="Erreur lors de la conversion du PDF : Erreur de conversion"):
pdf_to_text("test.pdf")
class TestTraduireMois:
"""
Tests pour la fonction traduire_mois.
"""
@pytest.mark.parametrize("input_str, expected_output", [
("fév", "feb"),
("mars", "mar"),
("avr", "apr"),
("mai", "may"),
("juin", "jun"),
("juil", "jul"),
("août", "aug"),
("déc", "dec"),
("janvier fév mars", "janvier feb mar"),
("Le 15 juin 2023", "Le 15 jun 2023"),
])
def test_traduire_mois(self, input_str, expected_output):
"""
Teste la traduction des abréviations de mois.
Args:
input_str (str): Chaîne d'entrée contenant des abréviations de mois en français.
expected_output (str): Chaîne de sortie attendue avec les abréviations traduites.
"""
assert traduire_mois(input_str) == expected_output
def test_no_translation_needed(self):
"""
Teste le cas où aucune traduction n'est nécessaire.
"""
input_str = "Ceci est une phrase sans mois"
assert traduire_mois(input_str) == input_str
def test_all_translations(self):
"""
Teste que toutes les traductions définies sont correctement appliquées.
"""
input_str = " ".join(TRADUCTIONS_MOIS.keys())
expected_output = " ".join(TRADUCTIONS_MOIS.values())
assert traduire_mois(input_str) == expected_output