mentorme / test_api.py
Doanh Van Vu
Refactor recommendation request and mentee query text handling
71703c8
import requests
import json
BASE_URL = "https://mentorme666-mentorme.hf.space/api/v1"
def test_recommend():
"""Test recommend mentors endpoint"""
print("Testing Recommend Mentors...")
print("="*60)
recommendation_data = {
"goals": "Tôi muốn học Python và FastAPI để phát triển web",
"career_id": 1,
"domain_ids": [1],
"mentor_domain_ids": [2, 3],
"skill_ids": [1, 2],
"top_k": 30,
"final_count": 6
}
try:
print(f"Request URL: {BASE_URL}/recommend")
print(f"Request Data: {json.dumps(recommendation_data, indent=2, ensure_ascii=False)}")
print("\nSending request...")
response = requests.post(
f"{BASE_URL}/recommend",
json=recommendation_data,
headers={
"Content-Type": "application/json",
"User-Agent": "Mozilla/5.0",
"Accept": "application/json"
},
timeout=60
)
print(f"\n{'='*60}")
print("Response:")
print(f"{'='*60}")
print(f"Status Code: {response.status_code}")
print(f"URL: {response.url}")
if response.status_code == 200:
try:
result = response.json()
print(f"\nResponse JSON:")
print(json.dumps(result, indent=2, ensure_ascii=False))
if "mentors" in result:
print(f"\nFound {result.get('count', 0)} recommended mentors:")
for i, mentor in enumerate(result["mentors"], 1):
print(f"\n{i}. Mentor ID: {mentor.get('mentor_id')}")
print(f" Score: {mentor.get('score', 0):.4f}")
print(f" Semantic Similarity: {mentor.get('semantic_similarity', 0):.4f}")
print(f" Reason: {mentor.get('reason', 'N/A')}")
if "metadata" in mentor:
meta = mentor["metadata"]
print(f" Rating: {meta.get('rating', 'N/A')}")
if "query_text" in result:
print(f"\nQuery Text: {result['query_text']}")
print(f"\n{'='*60}")
print("[PASSED] Test completed successfully!")
return True
except json.JSONDecodeError:
print(f"Response Text: {response.text}")
print(f"\n{'='*60}")
print("[FAILED] Invalid JSON response")
return False
else:
print(f"Response Text: {response.text}")
print(f"\n{'='*60}")
print(f"[FAILED] Status code: {response.status_code}")
return False
except requests.exceptions.Timeout:
print(f"\n{'='*60}")
print("[FAILED] Request timeout")
return False
except requests.exceptions.ConnectionError as e:
print(f"\n{'='*60}")
print(f"[FAILED] Connection error: {str(e)}")
return False
except Exception as e:
print(f"\n{'='*60}")
print(f"[FAILED] Error: {str(e)}")
return False
if __name__ == "__main__":
print("\n" + "="*60)
print("MentorMe AI Service - Recommend API Test")
print("="*60 + "\n")
success = test_recommend()
print("\n" + "="*60)
if success:
print("Test Result: PASSED")
else:
print("Test Result: FAILED")
print("="*60 + "\n")