167 lines
5.8 KiB
Bash
Executable File
167 lines
5.8 KiB
Bash
Executable File
#!/bin/bash
|
||
|
||
# Скрипт для запуска тестов AnonBot
|
||
|
||
set -e
|
||
|
||
echo "🧪 Запуск тестов AnonBot"
|
||
echo "========================="
|
||
|
||
# Проверяем, что мы в правильной директории
|
||
if [ ! -f "pytest.ini" ]; then
|
||
echo "❌ Ошибка: pytest.ini не найден. Запустите скрипт из корневой директории проекта."
|
||
exit 1
|
||
fi
|
||
|
||
# Устанавливаем тестовые зависимости
|
||
echo "📦 Установка тестовых зависимостей..."
|
||
pip install -r tests/requirements.txt
|
||
|
||
# Создаем тестовую БД в памяти
|
||
export DATABASE_PATH=":memory:"
|
||
export TELEGRAM_BOT_TOKEN="test_token"
|
||
export ADMINS="123456789,987654321"
|
||
export LOG_LEVEL="DEBUG"
|
||
|
||
echo "🔧 Настройка тестового окружения..."
|
||
|
||
# Функция для запуска тестов с покрытием
|
||
run_tests_with_coverage() {
|
||
local test_path="$1"
|
||
local test_name="$2"
|
||
|
||
echo "📊 Запуск $test_name с покрытием..."
|
||
pytest "$test_path" \
|
||
--cov=. \
|
||
--cov-report=html \
|
||
--cov-report=term-missing \
|
||
--cov-fail-under=80 \
|
||
-v
|
||
}
|
||
|
||
# Функция для запуска тестов без покрытия
|
||
run_tests() {
|
||
local test_path="$1"
|
||
local test_name="$2"
|
||
|
||
echo "🚀 Запуск $test_name..."
|
||
pytest "$test_path" -v
|
||
}
|
||
|
||
# Функция для запуска тестов по маркерам
|
||
run_tests_by_marker() {
|
||
local marker="$1"
|
||
local test_name="$2"
|
||
|
||
echo "🏷️ Запуск $test_name (маркер: $marker)..."
|
||
pytest -m "$marker" -v
|
||
}
|
||
|
||
# Основное меню
|
||
case "${1:-all}" in
|
||
"all")
|
||
echo "🎯 Запуск всех тестов..."
|
||
run_tests_with_coverage "tests/" "всех тестов"
|
||
;;
|
||
|
||
"unit")
|
||
echo "🔬 Запуск unit тестов..."
|
||
run_tests_with_coverage "tests/unit/" "unit тестов"
|
||
;;
|
||
|
||
"integration")
|
||
echo "🔗 Запуск интеграционных тестов..."
|
||
run_tests "tests/integration/" "интеграционных тестов"
|
||
;;
|
||
|
||
"models")
|
||
echo "📊 Запуск тестов моделей..."
|
||
run_tests "tests/unit/models/" "тестов моделей"
|
||
;;
|
||
|
||
"validation")
|
||
echo "✅ Запуск тестов валидации..."
|
||
run_tests "tests/unit/services/validation/" "тестов валидации"
|
||
;;
|
||
|
||
"auth")
|
||
echo "🔐 Запуск тестов авторизации..."
|
||
run_tests "tests/unit/services/auth/" "тестов авторизации"
|
||
;;
|
||
|
||
"crud")
|
||
echo "💾 Запуск тестов CRUD..."
|
||
run_tests "tests/unit/database/" "тестов CRUD"
|
||
;;
|
||
|
||
"services")
|
||
echo "⚙️ Запуск тестов сервисов..."
|
||
run_tests "tests/unit/services/" "тестов сервисов"
|
||
;;
|
||
|
||
"handlers")
|
||
echo "🎮 Запуск тестов обработчиков..."
|
||
run_tests "tests/unit/handlers/" "тестов обработчиков"
|
||
;;
|
||
|
||
"middleware")
|
||
echo "🔧 Запуск тестов middleware..."
|
||
run_tests "tests/unit/middlewares/" "тестов middleware"
|
||
;;
|
||
|
||
"config")
|
||
echo "⚙️ Запуск тестов конфигурации..."
|
||
run_tests "tests/unit/config/" "тестов конфигурации"
|
||
;;
|
||
|
||
"coverage")
|
||
echo "📊 Генерация отчета о покрытии..."
|
||
pytest --cov=. --cov-report=html --cov-report=term-missing -v
|
||
echo "📁 Отчет сохранен в htmlcov/index.html"
|
||
;;
|
||
|
||
"fast")
|
||
echo "⚡ Быстрый запуск тестов..."
|
||
pytest -x -v --tb=short
|
||
;;
|
||
|
||
"debug")
|
||
echo "🐛 Запуск тестов в режиме отладки..."
|
||
pytest -v -s --pdb --tb=long
|
||
;;
|
||
|
||
"help")
|
||
echo "📖 Доступные команды:"
|
||
echo " all - Запуск всех тестов с покрытием"
|
||
echo " unit - Запуск unit тестов с покрытием"
|
||
echo " integration - Запуск интеграционных тестов"
|
||
echo " models - Запуск тестов моделей"
|
||
echo " validation - Запуск тестов валидации"
|
||
echo " auth - Запуск тестов авторизации"
|
||
echo " crud - Запуск тестов CRUD"
|
||
echo " services - Запуск тестов сервисов"
|
||
echo " handlers - Запуск тестов обработчиков"
|
||
echo " middleware - Запуск тестов middleware"
|
||
echo " config - Запуск тестов конфигурации"
|
||
echo " coverage - Генерация отчета о покрытии"
|
||
echo " fast - Быстрый запуск тестов"
|
||
echo " debug - Запуск в режиме отладки"
|
||
echo " help - Показать эту справку"
|
||
echo ""
|
||
echo "Примеры использования:"
|
||
echo " ./tests/run_tests.sh all"
|
||
echo " ./tests/run_tests.sh unit"
|
||
echo " ./tests/run_tests.sh models"
|
||
echo " ./tests/run_tests.sh coverage"
|
||
;;
|
||
|
||
*)
|
||
echo "❌ Неизвестная команда: $1"
|
||
echo "Используйте './tests/run_tests.sh help' для справки"
|
||
exit 1
|
||
;;
|
||
esac
|
||
|
||
echo ""
|
||
echo "✅ Тесты завершены!"
|