Spaces:
Sleeping
Sleeping
| import sys | |
| sys.path.append("..") | |
| from agent import agent | |
| from database import db, Platform | |
| import logging | |
| logging.basicConfig(level=logging.INFO) | |
| logger = logging.getLogger(__name__) | |
| def test_suggestion(category: str, budget: int, user_id: str = "test_user"): | |
| """Test product suggestion.""" | |
| logger.info(f"\n{'='*60}") | |
| logger.info(f"Testing: {category} under ₹{budget}") | |
| logger.info(f"{'='*60}\n") | |
| message = f"I need a {category} under ₹{budget}" | |
| result = agent.process_request( | |
| platform="ui", | |
| platform_user_id=user_id, | |
| user_message=message | |
| ) | |
| logger.info(f"Success: {result['success']}") | |
| logger.info(f"Response: {result['response_text']}") | |
| logger.info(f"Picks: {result.get('picks', [])}") | |
| assert result['success'], f"Request failed: {result.get('error')}" | |
| picks = result.get('picks', []) | |
| assert len(picks) <= 3, f"Expected max 3 picks, got {len(picks)}" | |
| assert "Top Picks:" in result['response_text'], "Response should contain 'Top Picks:'" | |
| logger.info("✅ Test passed\n") | |
| return result | |
| def run_all_tests(): | |
| """Run all test scenarios.""" | |
| logger.info("\n" + "="*60) | |
| logger.info("🧪 Running Product Suggestion Tests") | |
| logger.info("="*60 + "\n") | |
| test_cases = [ | |
| ("mobile", 5000), | |
| ("books", 300), | |
| ("cycle", 7000), | |
| ("mobile", 8000), | |
| ("books", 200), | |
| ] | |
| results = [] | |
| for category, budget in test_cases: | |
| try: | |
| result = test_suggestion(category, budget) | |
| results.append({ | |
| "category": category, | |
| "budget": budget, | |
| "status": "PASSED", | |
| "picks": len(result.get('picks', [])) | |
| }) | |
| except Exception as e: | |
| logger.error(f"❌ Test failed: {e}") | |
| results.append({ | |
| "category": category, | |
| "budget": budget, | |
| "status": "FAILED", | |
| "error": str(e) | |
| }) | |
| logger.info("\n" + "="*60) | |
| logger.info("📊 Test Summary") | |
| logger.info("="*60) | |
| for i, result in enumerate(results, 1): | |
| status_icon = "✅" if result['status'] == "PASSED" else "❌" | |
| logger.info(f"{status_icon} Test {i}: {result['category']} @ ₹{result['budget']} - {result['status']}") | |
| if result['status'] == "PASSED": | |
| logger.info(f" Picks returned: {result['picks']}") | |
| passed = sum(1 for r in results if r['status'] == "PASSED") | |
| total = len(results) | |
| logger.info(f"\n🎯 Results: {passed}/{total} tests passed") | |
| logger.info("="*60 + "\n") | |
| if __name__ == "__main__": | |
| run_all_tests() | |