""" Test script for the Panic Detection API Run this locally to test your API before deployment """ import requests import json # Change this to your API URL # For local testing: "http://localhost:7860" # For Hugging Face: "https://your-space-name.hf.space" API_URL = "http://localhost:7860" def test_root(): """Test root endpoint""" print("\n" + "="*50) print("Testing Root Endpoint") print("="*50) response = requests.get(f"{API_URL}/") print(f"Status Code: {response.status_code}") print(f"Response: {json.dumps(response.json(), indent=2)}") def test_health(): """Test health check endpoint""" print("\n" + "="*50) print("Testing Health Check Endpoint") print("="*50) response = requests.get(f"{API_URL}/health") print(f"Status Code: {response.status_code}") print(f"Response: {json.dumps(response.json(), indent=2)}") def test_model_info(): """Test model info endpoint""" print("\n" + "="*50) print("Testing Model Info Endpoint") print("="*50) response = requests.get(f"{API_URL}/model-info") print(f"Status Code: {response.status_code}") print(f"Response: {json.dumps(response.json(), indent=2)}") def test_predict_no_panic(): """Test prediction with no panic scenario""" print("\n" + "="*50) print("Testing Prediction - No Panic Scenario") print("="*50) data = { "gender": "Female", "age": 30, "weight": 60.0, "heartrate": 75, "stepcount": 3000, "activity": "Walking" } print(f"Input Data: {json.dumps(data, indent=2)}") response = requests.post(f"{API_URL}/predict", json=data) print(f"Status Code: {response.status_code}") print(f"Response: {json.dumps(response.json(), indent=2)}") def test_predict_panic(): """Test prediction with panic scenario""" print("\n" + "="*50) print("Testing Prediction - Potential Panic Scenario") print("="*50) data = { "gender": "Male", "age": 25, "weight": 75.0, "heartrate": 150, "stepcount": 1000, "activity": "Standing" } print(f"Input Data: {json.dumps(data, indent=2)}") response = requests.post(f"{API_URL}/predict", json=data) print(f"Status Code: {response.status_code}") print(f"Response: {json.dumps(response.json(), indent=2)}") def test_batch_predict(): """Test batch prediction""" print("\n" + "="*50) print("Testing Batch Prediction") print("="*50) data = [ { "gender": "Male", "age": 25, "weight": 70.5, "heartrate": 120, "stepcount": 5000, "activity": "Running" }, { "gender": "Female", "age": 30, "weight": 60.0, "heartrate": 75, "stepcount": 3000, "activity": "Walking" } ] print(f"Input Data: {json.dumps(data, indent=2)}") response = requests.post(f"{API_URL}/batch-predict", json=data) print(f"Status Code: {response.status_code}") print(f"Response: {json.dumps(response.json(), indent=2)}") def test_invalid_input(): """Test with invalid input""" print("\n" + "="*50) print("Testing Invalid Input") print("="*50) data = { "gender": "InvalidGender", "age": 25, "weight": 70.5, "heartrate": 120, "stepcount": 5000, "activity": "Running" } print(f"Input Data: {json.dumps(data, indent=2)}") response = requests.post(f"{API_URL}/predict", json=data) print(f"Status Code: {response.status_code}") print(f"Response: {response.text}") if __name__ == "__main__": print("\n" + "="*50) print("PANIC DETECTION API TEST SUITE") print("="*50) print(f"Testing API at: {API_URL}") try: test_root() test_health() test_model_info() test_predict_no_panic() test_predict_panic() test_batch_predict() test_invalid_input() print("\n" + "="*50) print("ALL TESTS COMPLETED") print("="*50) except requests.exceptions.ConnectionError: print("\n❌ ERROR: Could not connect to API") print("Make sure the API is running!") print("To run locally: uvicorn app:app --host 0.0.0.0 --port 7860") except Exception as e: print(f"\n❌ ERROR: {str(e)}")