Spaces:
Runtime error
Runtime error
File size: 3,998 Bytes
ae9ec05 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 |
#!/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) |