feat: Amorçage des tests automatiques [#64]

This commit is contained in:
N3WT DE COMPET
2025-06-05 17:20:59 +02:00
parent 0064b8d35a
commit 0a2b23f260
5 changed files with 229 additions and 1 deletions

View File

@ -0,0 +1,39 @@
"""
Starter de tests automatiques pour valider tous les endpoints définis dans les fichiers urls.py du projet Django N3WT-SCHOOL.
Chaque endpoint est testé pour la réponse HTTP attendue (200, 401, 403, 404, etc.).
"""
import pytest
from django.urls import reverse, resolve
from rest_framework.test import APIClient
from django.conf import settings
from django.urls import get_resolver
@pytest.mark.django_db
class TestAllEndpoints:
@pytest.fixture(autouse=True)
def setup(self):
self.client = APIClient()
def get_all_url_patterns(self):
resolver = get_resolver()
patterns = resolver.url_patterns
urls = []
def extract(patterns, prefix=""):
for p in patterns:
if hasattr(p, 'url_patterns'):
extract(p.url_patterns, prefix + str(p.pattern))
else:
urls.append(prefix + str(p.pattern))
extract(patterns)
return urls
def test_all_endpoints_anonymous(self):
urls = self.get_all_url_patterns()
for url in urls:
if '<' in url: # skip dynamic urls for starter
continue
try:
response = self.client.get(url)
assert response.status_code in [200, 401, 403, 404]
except Exception as e:
print(f"Erreur sur {url}: {e}")