audio_summarizer / test_gradio.py
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)