telegram.video.summary.bot/tests/README.md

92 lines
3.0 KiB
Markdown

# 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