telegram.video.summary.bot/tests
TBS093A 4d38aa3aec feat(openai): add checkers & exceptions catchs
-
2025-05-14 13:54:13 +02:00
..
README.md feat(init): prepare full working yt-transcript-api integration with tests 2025-05-14 13:45:27 +02:00
check_env.py feat(openai): add checkers & exceptions catchs 2025-05-14 13:54:13 +02:00
conftest.py feat(init): prepare full working yt-transcript-api integration with tests 2025-05-14 13:45:27 +02:00
test_integration.py feat(init): prepare full working yt-transcript-api integration with tests 2025-05-14 13:45:27 +02:00
test_openai_utils.py feat(openai): add checkers & exceptions catchs 2025-05-14 13:54:13 +02:00
test_real_integration.py feat(openai): add checkers & exceptions catchs 2025-05-14 13:54:13 +02:00
test_youtube_utils.py feat(init): prepare full working yt-transcript-api integration with tests 2025-05-14 13:45:27 +02:00

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ą:

  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ą:

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