create a simple script to run all tests

This commit is contained in:
Maximilian 2025-06-07 19:38:47 +02:00
parent 3569b219c7
commit 41ffe82660
3 changed files with 123 additions and 424 deletions

105
start_test.sh Executable file
View file

@ -0,0 +1,105 @@
#!/bin/bash
# start_test.sh - Test Runner for Fallen Birdy Form
# Führt alle Tests aus und zeigt eine Zusammenfassung an
echo "🧪 ===== FALLEN BIRDY FORM - TEST SUITE ====="
echo "📅 Start: $(date '+%d.%m.%Y %H:%M:%S')"
echo ""
# Farben für die Ausgabe
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'
# Test Counters
TOTAL_TESTS=0
TOTAL_FAILED=0
ALL_PASSED=true
echo -e "${BLUE}🔍 Überprüfung der Voraussetzungen...${NC}"
# Prüfen ob Docker Container läuft
if ! docker ps | grep -q "django_fbf_web_1"; then
echo -e "${RED}❌ Django Container läuft nicht!${NC}"
echo " Bitte starten Sie das Projekt zuerst mit: ./start_project.sh"
exit 1
fi
echo -e "${GREEN}✅ Container läuft${NC}"
echo ""
# 1. Django Tests
echo -e "${BLUE}1⃣ Django Tests (im Docker Container)...${NC}"
echo "----------------------------------------"
DJANGO_RESULT=$(docker exec django_fbf_web_1 python manage.py test 2>&1)
DJANGO_EXIT=$?
if [ $DJANGO_EXIT -eq 0 ]; then
DJANGO_COUNT=$(echo "$DJANGO_RESULT" | grep -o "Ran [0-9]\+ tests" | grep -o "[0-9]\+" || echo "0")
echo -e "${GREEN}✅ Django Tests: $DJANGO_COUNT Tests bestanden${NC}"
TOTAL_TESTS=$((TOTAL_TESTS + DJANGO_COUNT))
else
echo -e "${RED}❌ Django Tests: Fehler aufgetreten${NC}"
echo "$DJANGO_RESULT" | tail -5
ALL_PASSED=false
TOTAL_FAILED=$((TOTAL_FAILED + 1))
fi
echo ""
# 2. Pytest Tests (alle zusammen)
echo -e "${BLUE}2⃣ Pytest Tests (Unit, Integration, Functional)...${NC}"
echo "------------------------------------------------"
if command -v python3 >/dev/null 2>&1 && python3 -c "import pytest" 2>/dev/null; then
PYTEST_RESULT=$(python3 -m pytest test/ -v --tb=short 2>&1)
PYTEST_EXIT=$?
if [ $PYTEST_EXIT -eq 0 ]; then
PYTEST_COUNT=$(echo "$PYTEST_RESULT" | grep -E "=+ [0-9]+ passed" | grep -o "[0-9]\+ passed" | grep -o "[0-9]\+" || echo "0")
echo -e "${GREEN}✅ Pytest Tests: $PYTEST_COUNT Tests bestanden${NC}"
TOTAL_TESTS=$((TOTAL_TESTS + PYTEST_COUNT))
else
PYTEST_FAILED=$(echo "$PYTEST_RESULT" | grep -E "=+ [0-9]+ failed" | grep -o "[0-9]\+ failed" | grep -o "[0-9]\+" || echo "0")
echo -e "${RED}❌ Pytest Tests: $PYTEST_FAILED Tests fehlgeschlagen${NC}"
echo "$PYTEST_RESULT" | tail -10
ALL_PASSED=false
TOTAL_FAILED=$((TOTAL_FAILED + PYTEST_FAILED))
fi
else
echo -e "${YELLOW}⚠️ Pytest nicht verfügbar - überspringe externe Tests${NC}"
fi
echo ""
# Zusammenfassung
echo "🎯 ===== TEST ZUSAMMENFASSUNG ====="
echo "📊 Gesamt Tests ausgeführt: $TOTAL_TESTS"
if [ "$ALL_PASSED" = true ] && [ $TOTAL_FAILED -eq 0 ]; then
echo -e "${GREEN}🎉 ALLE TESTS BESTANDEN! 🎉${NC}"
EXIT_CODE=0
else
echo -e "${RED}❌ Es gab Fehler bei den Tests${NC}"
echo " Fehlgeschlagene Tests: $TOTAL_FAILED"
EXIT_CODE=1
fi
echo ""
echo "⏱️ Beendet: $(date '+%d.%m.%Y %H:%M:%S')"
echo "=================================="
# Coverage Report (optional)
if [ "$ALL_PASSED" = true ] && command -v python3 >/dev/null 2>&1; then
echo ""
echo -e "${BLUE}📈 Generiere Test Coverage Report...${NC}"
if python3 -m pytest test/ --cov=app --cov-report=html -q >/dev/null 2>&1; then
echo -e "${GREEN}✅ Coverage Report: htmlcov/index.html${NC}"
else
echo -e "${YELLOW}⚠️ Coverage Report nicht verfügbar${NC}"
fi
fi
exit $EXIT_CODE