oedb-backend/extractors/test_agendadulibre_improvements.py
2025-10-09 22:57:06 +02:00

92 lines
2.9 KiB
Python

#!/usr/bin/env python3
"""
Script de test pour les améliorations du scraper agenda du libre
Démontre les nouvelles fonctionnalités : cache JSON, limitation d'événements, mode dry-run
"""
import subprocess
import sys
import os
def run_test(test_name, command):
"""Exécute un test et affiche les résultats"""
print(f"\n{'='*60}")
print(f"TEST: {test_name}")
print(f"{'='*60}")
print(f"Commande: {' '.join(command)}")
print("-" * 60)
try:
result = subprocess.run(command, capture_output=True, text=True, timeout=120)
print("STDOUT:")
print(result.stdout)
if result.stderr:
print("STDERR:")
print(result.stderr)
print(f"Code de retour: {result.returncode}")
return result.returncode == 0
except subprocess.TimeoutExpired:
print("TIMEOUT: Le test a pris trop de temps")
return False
except Exception as e:
print(f"ERREUR: {e}")
return False
def main():
"""Exécute une série de tests pour démontrer les améliorations"""
print("🧪 Tests des améliorations du scraper agenda du libre")
print("=" * 60)
# Vérifier que le script existe
script_path = "agendadulibre.py"
if not os.path.exists(script_path):
print(f"❌ Erreur: Le script {script_path} n'existe pas")
sys.exit(1)
tests = [
{
"name": "Test 1: Mode dry-run par défaut (limite 5 événements)",
"command": [sys.executable, script_path, "--max-events", "5", "--verbose"]
},
{
"name": "Test 2: Mode dry-run avec cache (limite 3 événements)",
"command": [sys.executable, script_path, "--max-events", "3", "--verbose"]
},
{
"name": "Test 3: Mode réel (--no-dry-run) avec limite 2 événements",
"command": [sys.executable, script_path, "--no-dry-run", "--max-events", "2", "--verbose"]
},
{
"name": "Test 4: Force refresh avec dry-run",
"command": [sys.executable, script_path, "--force-refresh", "--max-events", "3", "--verbose"]
}
]
results = []
for test in tests:
success = run_test(test["name"], test["command"])
results.append((test["name"], success))
# Résumé des tests
print(f"\n{'='*60}")
print("RÉSUMÉ DES TESTS")
print(f"{'='*60}")
passed = 0
for name, success in results:
status = "✅ PASSÉ" if success else "❌ ÉCHOUÉ"
print(f"{status}: {name}")
if success:
passed += 1
print(f"\nRésultat: {passed}/{len(results)} tests réussis")
if passed == len(results):
print("🎉 Tous les tests sont passés avec succès !")
return 0
else:
print("⚠️ Certains tests ont échoué")
return 1
if __name__ == "__main__":
sys.exit(main())