Implement user-specific question numbering and update database schema. Added triggers for automatic question numbering and adjustments upon deletion. Enhanced CRUD operations to manage user_question_number effectively.
This commit is contained in:
166
tests/run_tests.sh
Executable file
166
tests/run_tests.sh
Executable file
@@ -0,0 +1,166 @@
|
||||
#!/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 "✅ Тесты завершены!"
|
||||
Reference in New Issue
Block a user