# Testy jednostkowe i integracyjne dla Telegram Video Summary Bot Ten katalog zawiera testy jednostkowe i integracyjne dla głównych komponentów bota do streszczania filmów YouTube. ## Struktura testów - **test_youtube_utils.py** - testy jednostkowe dla modułu `youtube_utils.py` (ekstrakcja URL, ID, pobieranie transkrypcji) - **test_openai_utils.py** - testy jednostkowe dla modułu `openai_utils.py` (streszczanie tekstu) - **test_integration.py** - testy integracyjne łączące obie funkcjonalności (od URL do streszczenia) - **test_real_integration.py** - testy wykorzystujące rzeczywiste API (YouTube, OpenAI) bez mockowania - **conftest.py** - konfiguracja pytest dla testów asynchronicznych ## Typy testów ### Testy jednostkowe (mocki) Testy jednostkowe używają mocków do symulowania zewnętrznych zależności i skupiają się na testowaniu indywidualnych funkcji w izolacji. Są szybkie i niezależne od zewnętrznych serwisów. ### Testy integracyjne rzeczywiste Testy w pliku `test_real_integration.py` używają rzeczywistych usług zewnętrznych: - Komunikują się z rzeczywistym API YouTube, aby pobierać transkrypcje i metadane filmów - Wywołują rzeczywiste API OpenAI (wymaga klucza API) - Testują pełny przepływ od URL do streszczenia Te testy są oznaczone jako "slow" i "integration", więc można je łatwo pominąć podczas zwykłego uruchamiania testów. ## Uruchamianie testów ### Za pomocą pytest Aby uruchomić wszystkie testy, użyj pytest: ```bash python -m pytest tests/ ``` Aby uruchomić tylko testy jednostkowe (szybkie, bez zewnętrznych zależności): ```bash python -m pytest tests/ -k "not integration and not slow" ``` Aby uruchomić tylko testy integracyjne z rzeczywistymi API: ```bash python -m pytest tests/test_real_integration.py -v ``` Testy asynchroniczne wykorzystują plugin pytest-asyncio, który jest skonfigurowany w pliku `conftest.py`. ### Za pomocą tox Testy można również uruchomić za pomocą narzędzia tox, które tworzy izolowane środowisko wirtualne: ```bash # Uruchomienie tylko testów jednostkowych (mocki) tox -e unit-tests # Uruchomienie testów integracyjnych z rzeczywistymi API tox -e integration-tests # Uruchomienie wszystkich testów tox -e all-tests # Uruchomienie testów z raportem pokrycia kodu tox -e cov ``` ## Wymagania Testy integracyjne z rzeczywistymi API wymagają: 1. Połączenia z internetem 2. Klucza API OpenAI (dla testów związanych z OpenAI) Aby testy OpenAI działały, ustaw zmienną środowiskową: ```bash export OPENAI_API_KEY=twój_klucz_api ``` lub użyj pliku `.env` w katalogu głównym projektu: ``` OPENAI_API_KEY=twój_klucz_api ``` ## Uwagi - Testy używające rzeczywistych API mogą czasami kończyć się niepowodzeniem ze względu na ograniczenia API, problemy z siecią, itp. - Testy OpenAI zużywają tokeny, co może wiązać się z kosztami - Używamy publicznego i popularnego TED Talk jako przykładowego filmu, który ma transkrypcje w wielu językach i jest mało prawdopodobne, że zostanie usunięty