yonnel
Initial clean commit - FastAPI movie backend without large data files
66fef64
"""
Test l'API /explore avec des exemples de films
"""
import requests
import json
# Configuration
API_URL = "http://localhost:8000"
API_TOKEN = "your-api-token" # Remplacez par votre token
def test_explore_endpoint():
"""Test l'endpoint /explore avec différents scénarios"""
# Lire les métadonnées pour avoir des IDs de test
with open("app/data/movie_metadata.json", "r") as f:
metadata = json.load(f)
# Prendre les premiers films comme exemples
movie_ids = list(metadata.keys())[:5]
print(f"Films de test disponibles : {[metadata[mid]['title'] for mid in movie_ids]}")
# Test 1: Recherche avec 1 film aimé
print("\n🎬 Test 1: Recherche avec 1 film aimé")
test_request = {
"liked_ids": [int(movie_ids[0])],
"disliked_ids": [],
"top_k": 10
}
try:
response = requests.post(
f"{API_URL}/explore",
json=test_request,
headers={"Authorization": f"Bearer {API_TOKEN}"}
)
if response.status_code == 200:
data = response.json()
print(f"✅ Trouvé {len(data['movies'])} films similaires")
print(f"Film aimé: {metadata[movie_ids[0]]['title']}")
print("Films recommandés:")
for movie in data['movies'][:3]:
print(f" - {movie['title']} ({movie['year']}) - {movie['genres']}")
else:
print(f"❌ Erreur {response.status_code}: {response.text}")
except Exception as e:
print(f"❌ Erreur de connexion: {e}")
print("💡 Vérifiez que votre API_TOKEN est correct dans le .env")
# Test 2: Recherche avec 2 films aimés
print("\n🎬 Test 2: Recherche avec 2 films aimés")
test_request = {
"liked_ids": [int(movie_ids[0]), int(movie_ids[1])],
"disliked_ids": [],
"top_k": 10
}
try:
response = requests.post(
f"{API_URL}/explore",
json=test_request,
headers={"Authorization": f"Bearer {API_TOKEN}"}
)
if response.status_code == 200:
data = response.json()
print(f"✅ Trouvé {len(data['movies'])} films similaires")
print(f"Films aimés: {metadata[movie_ids[0]]['title']}, {metadata[movie_ids[1]]['title']}")
print("Barycenter:", data['bary'])
else:
print(f"❌ Erreur {response.status_code}: {response.text}")
except Exception as e:
print(f"❌ Erreur: {e}")
if __name__ == "__main__":
print("🧪 Test de l'API /explore")
print("=" * 40)
test_explore_endpoint()