integrate openai Co-authored-by: TBS093A <zukkamil.44@gmail.com> Reviewed-on: https://git.00x097.com/tbs093a/telegram.video.summary.bot/pulls/1 |
||
|---|---|---|
| .. | ||
| README.md | ||
| check_env.py | ||
| conftest.py | ||
| test_integration.py | ||
| test_openai_utils.py | ||
| test_real_integration.py | ||
| test_youtube_utils.py | ||
README.md
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:
python -m pytest tests/
Aby uruchomić tylko testy jednostkowe (szybkie, bez zewnętrznych zależności):
python -m pytest tests/ -k "not integration and not slow"
Aby uruchomić tylko testy integracyjne z rzeczywistymi API:
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:
# 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ą:
- Połączenia z internetem
- Klucza API OpenAI (dla testów związanych z OpenAI)
Aby testy OpenAI działały, ustaw zmienną środowiskową:
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