telegram.video.summary.bot/tests/conftest.py

68 lines
2.5 KiB
Python

import pytest
import os
import sys
import logging
# Dodanie katalogu nadrzędnego do ścieżki dla importów
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
# Konfiguracja pytest-asyncio
# Ta opcja spowoduje, że wszystkie funkcje testowe z 'async def'
# będą automatycznie traktowane jako testy asynchroniczne
pytest_plugins = ['pytest_asyncio']
# Konfiguracja logowania dla testów
def pytest_configure(config):
"""Konfiguracja pytest przed uruchomieniem testów."""
# Ustawienie domyślnego zakresu pętli zdarzeń
config.option.asyncio_default_fixture_loop_scope = "function"
# Ustawienie trybu asyncio na AUTO, aby nie było ostrzeżeń o brakującym dekoratorze
# dla testów asynchronicznych
config.option.asyncio_mode = "auto"
# Rejestracja niestandardowych markerów testów
config.addinivalue_line(
"markers", "integration: testy wymagające rzeczywistych zewnętrznych usług"
)
config.addinivalue_line(
"markers", "slow: testy, które trwają dłużej niż standardowe testy jednostkowe"
)
# Konfiguracja logowania
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
handlers=[
logging.StreamHandler(), # Log do konsoli
logging.FileHandler('pytest.log') # Log do pliku
]
)
# Zmniejsz poziom logowania dla bibliotek zewnętrznych
logging.getLogger('urllib3').setLevel(logging.WARNING)
logging.getLogger('aiohttp').setLevel(logging.WARNING)
# Zwiększ poziom logowania dla naszych modułów
logging.getLogger('src').setLevel(logging.DEBUG)
# Hook uruchamiany przed każdym testem
def pytest_runtest_setup(item):
"""Dodatkowa konfiguracja przed każdym testem."""
# Dodaj linię oddzielającą w logach dla lepszej czytelności
logging.info("=" * 80)
logging.info(f"Rozpoczęcie testu: {item.name}")
# Hook uruchamiany po każdym teście
def pytest_runtest_teardown(item, nextitem):
"""Dodatkowa konfiguracja po każdym teście."""
logging.info(f"Zakończenie testu: {item.name}")
logging.info("-" * 80)
# Hook do obsługi niepowodzeń testów
def pytest_runtest_logreport(report):
"""Logowanie dodatkowych informacji o niepowodzeniach testów."""
if report.when == "call" and report.failed:
logging.error(f"Test zakończony niepowodzeniem: {report.nodeid}")
if hasattr(report, "longrepr"):
logging.error(f"Szczegóły błędu: {report.longrepr}")