Skip to main content
Glama
Skynotdie

MCP Localization Project

by Skynotdie
test_web_search.py8.1 kB
#!/usr/bin/env python3 """ Web Search MCP 테스트 스크립트 """ import sys import asyncio import logging # 로깅 설정 logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) def test_imports(): """모듈 임포트 테스트""" try: from web_search_base import SearchEngine, SearchRequest, SearchResponse logger.info("✅ web_search_base 모듈 임포트 성공") from web_search_antibot import EnhancedAntiBotManager logger.info("✅ web_search_antibot 모듈 임포트 성공") from web_search_analyzer import ContentAnalyzer logger.info("✅ web_search_analyzer 모듈 임포트 성공") try: from web_search_playwright import PlaywrightManager logger.info("✅ web_search_playwright 모듈 임포트 성공") except ImportError as e: logger.warning(f"⚠️ web_search_playwright 모듈 임포트 실패 (Playwright 없음): {e}") from web_search_engine import AdvancedSearchEngineHandler logger.info("✅ web_search_engine 모듈 임포트 성공") try: from web_search_main import CompleteWebSearchMCP, WebSearchMCPServer logger.info("✅ web_search_main 모듈 임포트 성공") except Exception as e: logger.error(f"❌ web_search_main 모듈 임포트 실패: {e}") return False logger.info("🎯 모든 핵심 모듈 임포트 성공!") return True except Exception as e: logger.error(f"❌ 모듈 임포트 실패: {e}") import traceback traceback.print_exc() return False def test_basic_functionality(): """기본 기능 테스트""" try: from web_search_base import SearchEngine, SearchRequest from web_search_antibot import EnhancedAntiBotManager from web_search_analyzer import ContentAnalyzer # 1. SearchRequest 생성 테스트 request = SearchRequest( query="Python 프로그래밍", engines=[SearchEngine.GOOGLE], num_results=5 ) logger.info(f"✅ SearchRequest 생성 성공: {request.query}") # 2. AntiBotManager 테스트 antibot = EnhancedAntiBotManager() headers = antibot.get_optimized_headers(SearchEngine.GOOGLE) logger.info(f"✅ AntiBotManager 헤더 생성 성공: {len(headers)}개 헤더") # 3. ContentAnalyzer 테스트 analyzer = ContentAnalyzer() test_content = "<html><body><h1>테스트 제목</h1><p>테스트 내용입니다.</p></body></html>" quality, score, analysis = analyzer.analyze_content_quality( test_content, "https://example.com" ) logger.info(f"✅ ContentAnalyzer 분석 성공: 품질={quality}, 점수={score:.2f}") # 4. 캐시 키 생성 테스트 cache_key = request.get_cache_key() logger.info(f"✅ 캐시 키 생성 성공: {cache_key[:16]}...") logger.info("🎯 기본 기능 테스트 성공!") return True except Exception as e: logger.error(f"❌ 기본 기능 테스트 실패: {e}") import traceback traceback.print_exc() return False async def test_search_engine_handler(): """검색 엔진 핸들러 테스트""" try: from web_search_base import SearchEngine, SearchRequest from web_search_antibot import EnhancedAntiBotManager from web_search_playwright import PlaywrightManager from web_search_engine import AdvancedSearchEngineHandler # 매니저 초기화 antibot = EnhancedAntiBotManager() playwright = PlaywrightManager() # 초기화하지 않음 # 핸들러 생성 handler = AdvancedSearchEngineHandler(antibot, playwright) # URL 생성 테스트 request = SearchRequest( query="Python tutorial", engines=[SearchEngine.GOOGLE], num_results=5 ) url = handler.build_search_url(request, SearchEngine.GOOGLE) logger.info(f"✅ Google 검색 URL 생성 성공: {url[:50]}...") url2 = handler.build_search_url(request, SearchEngine.GITHUB) logger.info(f"✅ GitHub 검색 URL 생성 성공: {url2[:50]}...") logger.info("🎯 검색 엔진 핸들러 테스트 성공!") return True except Exception as e: logger.error(f"❌ 검색 엔진 핸들러 테스트 실패: {e}") import traceback traceback.print_exc() return False def test_cache_system(): """캐시 시스템 테스트""" try: from web_search_main import SearchCache from web_search_base import SearchRequest, SearchResponse, SearchResult, SearchEngine, SearchResultType from datetime import datetime # 캐시 초기화 cache = SearchCache(db_path="test_cache.db", ttl_hours=1) # 테스트 데이터 생성 test_result = SearchResult( title="테스트 제목", url="https://example.com", snippet="테스트 스니펫", result_type=SearchResultType.ORGANIC, ranking=1, timestamp=datetime.now() ) test_response = SearchResponse( query="테스트 쿼리", results=[test_result], total_results=1, search_time=0.5, engines_used=[SearchEngine.GOOGLE] ) # 캐시 저장 및 조회 테스트 cache_key = "test_key_123" cache.save_results(cache_key, test_response) logger.info("✅ 캐시 저장 성공") cached_response = cache.get_cached_results(cache_key) if cached_response and cached_response.query == "테스트 쿼리": logger.info("✅ 캐시 조회 성공") else: logger.warning("⚠️ 캐시 조회 실패") # 정리 cache.cleanup_expired() logger.info("✅ 캐시 정리 완료") logger.info("🎯 캐시 시스템 테스트 성공!") return True except Exception as e: logger.error(f"❌ 캐시 시스템 테스트 실패: {e}") import traceback traceback.print_exc() return False def main(): """메인 테스트 함수""" logger.info("🚀 Web Search MCP 테스트 시작") test_results = [] # 1. 모듈 임포트 테스트 logger.info("\n📦 모듈 임포트 테스트") test_results.append(("모듈 임포트", test_imports())) # 2. 기본 기능 테스트 logger.info("\n⚙️ 기본 기능 테스트") test_results.append(("기본 기능", test_basic_functionality())) # 3. 검색 엔진 핸들러 테스트 logger.info("\n🔍 검색 엔진 핸들러 테스트") test_results.append(("검색 엔진 핸들러", asyncio.run(test_search_engine_handler()))) # 4. 캐시 시스템 테스트 logger.info("\n💾 캐시 시스템 테스트") test_results.append(("캐시 시스템", test_cache_system())) # 결과 요약 logger.info("\n📊 테스트 결과 요약") passed = 0 total = len(test_results) for test_name, result in test_results: status = "✅ 통과" if result else "❌ 실패" logger.info(f" {test_name}: {status}") if result: passed += 1 logger.info(f"\n🏆 전체 결과: {passed}/{total} 테스트 통과") if passed == total: logger.info("🎉 모든 테스트 성공! Web Search MCP가 정상적으로 구현되었습니다.") return True else: logger.warning(f"⚠️ {total - passed}개 테스트 실패. 추가 작업이 필요합니다.") return False if __name__ == "__main__": success = main() sys.exit(0 if success else 1)

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Skynotdie/mky'

If you have feedback or need assistance with the MCP directory API, please join our Discord server