Spaces:
Runtime error
Runtime error
Jeongsoo1975
Initial commit: Gradio text-based speaker separation app for Hugging Face Spaces
ae9ec05
#!/usr/bin/env python3 | |
""" | |
Gradio 앱 기본 기능 테스트 스크립트 | |
""" | |
import os | |
import sys | |
import logging | |
# 로깅 설정 | |
logging.basicConfig(level=logging.INFO) | |
logger = logging.getLogger(__name__) | |
def test_imports(): | |
"""필수 모듈 import 테스트""" | |
try: | |
import gradio as gr | |
logger.info(f"✓ Gradio 버전: {gr.__version__}") | |
import torch | |
logger.info(f"✓ PyTorch 버전: {torch.__version__}") | |
import whisper | |
logger.info("✓ OpenAI Whisper 가져오기 성공") | |
import google.generativeai as genai | |
logger.info("✓ Google Generative AI 가져오기 성공") | |
from stt_processor import STTProcessor | |
logger.info("✓ STTProcessor 모듈 가져오기 성공") | |
return True | |
except ImportError as e: | |
logger.error(f"❌ 모듈 import 실패: {e}") | |
return False | |
def test_stt_processor_init(): | |
"""STTProcessor 초기화 테스트 (API 키 없이)""" | |
try: | |
from stt_processor import STTProcessor | |
# API 키 없이 초기화 시도 (예상되는 오류) | |
try: | |
processor = STTProcessor() | |
logger.error("❌ API 키 없이 초기화 성공 (예상되지 않음)") | |
return False | |
except ValueError as e: | |
logger.info(f"✓ API 키 검증 로직 정상 작동: {e}") | |
return True | |
except Exception as e: | |
logger.error(f"❌ STTProcessor 테스트 실패: {e}") | |
return False | |
def test_gradio_interface(): | |
"""Gradio 인터페이스 생성 테스트""" | |
try: | |
from app import create_interface | |
# 인터페이스 생성 테스트 | |
interface = create_interface() | |
logger.info("✓ Gradio 인터페이스 생성 성공") | |
# 인터페이스 구성 요소 확인 | |
if hasattr(interface, 'blocks'): | |
logger.info("✓ Gradio Blocks 구조 확인") | |
return True | |
except Exception as e: | |
logger.error(f"❌ Gradio 인터페이스 테스트 실패: {e}") | |
return False | |
def test_file_structure(): | |
"""필수 파일 구조 확인""" | |
required_files = [ | |
'app.py', | |
'stt_processor.py', | |
'requirements.txt', | |
'README.md', | |
'deployment_guide.md' | |
] | |
missing_files = [] | |
for file in required_files: | |
if not os.path.exists(file): | |
missing_files.append(file) | |
if missing_files: | |
logger.error(f"❌ 누락된 파일: {missing_files}") | |
return False | |
else: | |
logger.info("✓ 모든 필수 파일 존재 확인") | |
return True | |
def main(): | |
"""테스트 실행""" | |
logger.info("🧪 Gradio STT 앱 테스트 시작") | |
logger.info("=" * 50) | |
tests = [ | |
("필수 모듈 import", test_imports), | |
("파일 구조 확인", test_file_structure), | |
("STTProcessor 초기화", test_stt_processor_init), | |
("Gradio 인터페이스", test_gradio_interface) | |
] | |
passed = 0 | |
total = len(tests) | |
for test_name, test_func in tests: | |
logger.info(f"\n🔍 {test_name} 테스트...") | |
try: | |
if test_func(): | |
passed += 1 | |
logger.info(f"✅ {test_name} 통과") | |
else: | |
logger.error(f"❌ {test_name} 실패") | |
except Exception as e: | |
logger.error(f"❌ {test_name} 오류: {e}") | |
logger.info("\n" + "=" * 50) | |
logger.info(f"📊 테스트 결과: {passed}/{total} 통과") | |
if passed == total: | |
logger.info("🎉 모든 테스트 통과! 앱이 배포 준비되었습니다.") | |
return True | |
else: | |
logger.warning("⚠️ 일부 테스트가 실패했습니다. 문제를 확인해주세요.") | |
return False | |
if __name__ == "__main__": | |
success = main() | |
sys.exit(0 if success else 1) |