run_tests.py
1 #!/usr/bin/env python3 2 """ 3 Script pour exécuter les tests de l'API d'inférence multi-session. 4 Ce script permet d'exécuter tous les tests ou des catégories spécifiques. 5 """ 6 # Au début de votre fichier run_tests.py, ajoutez: 7 import os 8 os.environ["SAMPLE_VIDEO_PATH"] = "tests/fixtures/sample_video.mp4" 9 import argparse 10 import subprocess 11 import sys 12 import time 13 14 def parse_args(): 15 parser = argparse.ArgumentParser(description="Exécute les tests de l'API d'inférence multi-session") 16 17 parser.add_argument("--auth", action="store_true", help="Exécuter les tests d'authentification") 18 parser.add_argument("--inference", action="store_true", help="Exécuter les tests d'inférence") 19 parser.add_argument("--limits", action="store_true", help="Exécuter les tests des limites d'utilisation") 20 parser.add_argument("--video", action="store_true", help="Exécuter les tests d'analyse vidéo") 21 parser.add_argument("--transcription", action="store_true", help="Exécuter les tests de transcription") 22 parser.add_argument("--task", action="store_true", help="Exécuter les tests de gestion des tâches") 23 parser.add_argument("--health", action="store_true", help="Exécuter les tests de santé") 24 parser.add_argument("--subscription", action="store_true", help="Exécuter les tests d'abonnement") 25 parser.add_argument("--integration", action="store_true", help="Exécuter les tests d'intégration") 26 parser.add_argument("--json-simplifier", action="store_true", help="Exécuter les tests du JSONSimplifier") 27 parser.add_argument("--prompt-manager", action="store_true", help="Exécuter les tests du gestionnaire de prompts") 28 parser.add_argument("--all", action="store_true", help="Exécuter tous les tests") 29 parser.add_argument("--api-url", type=str, help="URL de base de l'API", default="http://localhost:8000") 30 parser.add_argument("--api-key", type=str, help="Clé API à utiliser pour les tests") 31 parser.add_argument("--premium-key", type=str, help="Clé API premium à utiliser pour les tests") 32 parser.add_argument("--token", type=str, help="Token JWT à utiliser pour les tests") 33 34 return parser.parse_args() 35 36 def run_test_file(test_file, api_url=None, api_key=None, premium_key=None, token=None): 37 """Exécute un fichier de test spécifique.""" 38 print(f"\n=== Exécution de {test_file} ===\n") 39 40 # Préparer les variables d'environnement 41 env = os.environ.copy() 42 if api_url: 43 env["API_BASE_URL"] = api_url 44 if api_key: 45 env["TEST_API_KEY"] = api_key 46 env["TEST_FREE_API_KEY"] = api_key 47 if premium_key: 48 env["TEST_PREMIUM_API_KEY"] = premium_key 49 if token: 50 env["TEST_TOKEN"] = token 51 52 # Exécuter le test 53 try: 54 result = subprocess.run([sys.executable, test_file], env=env, check=False) 55 return result.returncode == 0 56 except Exception as e: 57 print(f"Erreur lors de l'exécution de {test_file}: {e}") 58 return False 59 60 def main(): 61 args = parse_args() 62 63 # Si aucun test n'est spécifié, exécuter tous les tests 64 if not (args.auth or args.inference or args.limits or args.video or 65 args.transcription or args.task or args.health or 66 args.subscription or args.integration or args.json_simplifier or 67 args.prompt_manager or args.all): 68 args.all = True 69 70 # Déterminer quels tests exécuter 71 tests_to_run = [] 72 if args.auth or args.all: 73 tests_to_run.append("test_auth.py") 74 if args.inference or args.all: 75 tests_to_run.append("test_inference.py") 76 if args.limits or args.all: 77 tests_to_run.append("test_limits.py") 78 if args.video or args.all: 79 tests_to_run.append("test_video.py") 80 if args.transcription or args.all: 81 tests_to_run.append("test_transcription.py") 82 if args.task or args.all: 83 tests_to_run.append("test_task.py") 84 if args.health or args.all: 85 tests_to_run.append("test_health.py") 86 if args.subscription or args.all: 87 tests_to_run.append("test_subscription.py") 88 if args.integration or args.all: 89 tests_to_run.append("test_integration.py") 90 if args.json_simplifier or args.all: 91 tests_to_run.append("test_json_simplifier.py") 92 if args.prompt_manager or args.all: 93 tests_to_run.append("test_prompt_manager.py") 94 95 # Afficher les paramètres 96 print(f"URL de l'API: {args.api_url}") 97 print(f"Tests à exécuter: {', '.join(tests_to_run)}") 98 99 # Exécuter les tests 100 success = True 101 start_time = time.time() 102 103 for test_file in tests_to_run: 104 if not run_test_file(test_file, args.api_url, args.api_key, args.premium_key, args.token): 105 success = False 106 107 # Afficher le résultat global 108 execution_time = time.time() - start_time 109 print(f"\n=== Résultats des tests ===") 110 print(f"Temps d'exécution: {execution_time:.2f} secondes") 111 112 if success: 113 print("\033[92mTous les tests ont réussi!\033[0m") 114 return 0 115 else: 116 print("\033[91mCertains tests ont échoué.\033[0m") 117 return 1 118 119 if __name__ == "__main__": 120 sys.exit(main())