suggestion_bot / tests /test_agent.py
Sanjay Ram A
Upload 52 files
75788a5 verified
Raw
History Blame Contribute Delete
2.73 kB
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()