Spaces:
Runtime error
Runtime error
File size: 3,849 Bytes
0406bd2 |
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 |
"""
Tests unitaires pour le projet Amazon Sentiment Analysis
Teste les fonctions de traitement et de génération
"""
import sys
import os
# Import des modules à tester
from data_processing import clean_text, label_to_sentiment, make_fake_email
def test_clean_text():
"""Test de la fonction de nettoyage de texte"""
print("\n=== TEST : clean_text ===")
# Test 1 : Texte avec ponctuation
text1 = "Super produit !!! Je recommande."
result1 = clean_text(text1)
assert "super" in result1
assert "produit" in result1
assert "!" not in result1
print(f"✅ Test 1 réussi : '{text1}' → '{result1}'")
# Test 2 : Texte avec chiffres
text2 = "Livraison en 24h, excellent !"
result2 = clean_text(text2)
assert "24" not in result2
print(f"✅ Test 2 réussi : '{text2}' → '{result2}'")
# Test 3 : Stopwords supprimés
text3 = "Je suis très content de cet achat"
result3 = clean_text(text3)
assert "je" not in result3 # stopword supprimé
assert "content" in result3
print(f"✅ Test 3 réussi : '{text3}' → '{result3}'")
print("✅ Tous les tests clean_text réussis !")
def test_label_to_sentiment():
"""Test de la conversion label → sentiment"""
print("\n=== TEST : label_to_sentiment ===")
# Test labels négatifs (1-2 étoiles)
assert label_to_sentiment(1) == "negatif"
assert label_to_sentiment(2) == "negatif"
print("✅ Labels 1-2 → négatif")
# Test labels positifs (3-5 étoiles)
assert label_to_sentiment(3) == "positif"
assert label_to_sentiment(4) == "positif"
assert label_to_sentiment(5) == "positif"
print("✅ Labels 3-5 → positif")
# Test valeur invalide
assert label_to_sentiment("invalid") == "negatif" # Par défaut
print("✅ Valeur invalide gérée")
print("✅ Tous les tests label_to_sentiment réussis !")
def test_make_fake_email():
"""Test de la génération d'emails factices"""
print("\n=== TEST : make_fake_email ===")
# Test format
email1 = make_fake_email(1)
assert email1 == "client00001@example.com"
print(f"✅ Email 1 : {email1}")
email42 = make_fake_email(42)
assert email42 == "client00042@example.com"
assert "@example.com" in email42
print(f"✅ Email 42 : {email42}")
print("✅ Tous les tests make_fake_email réussis !")
def test_generer_response_mock():
"""
Test simulé de la génération de réponse (sans charger le modèle)
Vérifie que le prompt est bien construit
"""
print("\n=== TEST : build_reply_prompt ===")
from generate_response import build_reply_prompt
review = "Produit cassé"
prompt = build_reply_prompt(review)
# Vérifications
assert "service client" in prompt.lower()
assert "Produit cassé" in prompt
assert "poli et professionnel" in prompt
print("✅ Prompt correctement construit")
print(f"Extrait : {prompt[:100]}...")
def run_all_tests():
"""Lance tous les tests"""
print("=" * 80)
print("🧪 LANCEMENT DES TESTS UNITAIRES")
print("=" * 80)
try:
test_clean_text()
test_label_to_sentiment()
test_make_fake_email()
test_generer_response_mock()
print("\n" + "=" * 80)
print("🎉 TOUS LES TESTS ONT RÉUSSI !")
print("=" * 80)
return True
except AssertionError as e:
print("\n" + "=" * 80)
print(f"❌ ÉCHEC DES TESTS : {e}")
print("=" * 80)
return False
except Exception as e:
print("\n" + "=" * 80)
print(f"❌ ERREUR LORS DES TESTS : {e}")
print("=" * 80)
return False
if __name__ == "__main__":
success = run_all_tests()
sys.exit(0 if success else 1)
|