Files
AnonBot/tests/run_tests.sh

167 lines
5.8 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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 "✅ Тесты завершены!"