Testowanie uwierzytelnionych endpointów
Loguj się w testach, aby uzyskać dostęp do chronionych tras.
Testowanie uwierzytelnionych endpointów to bezpłatna lekcja Flask Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Flask Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Flask Academy zawiera 4 lekcji w sumie.
Wyzwanie związane z testami uwierzytelniania
Chronione routingi odrzucają anonimowych użytkowników. Aby je testować, klient musi najpierw zalogować się, tak jak prawdziwy użytkownik przed przejściem do chronionych stron.
Potwierdzanie działania ochrony
Najpierw należy potwierdzić, że brama jest zamknięta. Trzeba zażądać routingu bez zalogowania i sprawdzić, czy odpowiedź zawiera przekierowanie lub status 401.
resp = client.get('/dashboard')
assert resp.status_code == 302Logowanie przez routing logowania
Realistycznym sposobem uwierzytelnienia jest wysłanie danych logowania metodą POST do endpointu logowania. Klient automatycznie przechowuje cookie sesji.
client.post('/login', data={'email': 'a@b.com', 'password': 'pw'})Klient zachowuje cookies
Przydatny szczegół: klient testowy zapamiętuje cookies między wywołaniami. Po zalogowaniu kolejne żądania pozostają uwierzytelnione bez dodatkowej pracy.
Dostęp do chronionego routingu
Po zalogowaniu należy ponownie zażądać chronionej strony. Tym razem trzeba sprawdzić, czy odpowiedź ma status 200 i zawiera chronioną treść.
resp = client.get('/dashboard')
assert resp.status_code == 200Funkcja pomocnicza do logowania
Powtarzanie żądania logowania szybko staje się nieczytelne. Należy opakować je w małą funkcję helper, aby każdy test uwierzytelniania był przejrzysty i mieścił się w jednym wierszu.
def login(client):
return client.post('/login', data={'email': 'a@b.com', 'password': 'pw'})Fixture z uwierzytelnionym klientem
Jeszcze lepiej utworzyć fixture zwracający już zalogowanego klienta. Testy wymagające uwierzytelniania po prostu go pobierają i pomijają konfigurację początkową.
@pytest.fixture
def auth_client(client):
login(client)
yield clientTestowanie procesu wylogowania
Uwierzytelnianie nie jest zakończone, dopóki wylogowanie nie działa poprawnie. Należy wywołać /logout, a następnie potwierdzić, że chroniony routing ponownie odrzuca anonimowego już klienta.
client.get('/logout')
assert client.get('/dashboard').status_code == 302Pomijanie logowania dla większej szybkości
W aplikacjach Flask-Login można pominąć formularz i bezpośrednio ustawić session. Jest to szybsze, ale testuje mniejszą część rzeczywistego procesu logowania.
with client.session_transaction() as sess:
sess['_user_id'] = '1'Testowanie API chronionych tokenem
W przypadku API JWT nie ma cookie. Token należy wysyłać w nagłówku Authorization przy każdym żądaniu, aby uzyskać dostęp do chronionego endpointu.
client.get('/api/me', headers={'Authorization': 'Bearer ' + token})Testowanie obu stron bramy
Dobre testy uwierzytelniania sprawdzają oba rezultaty: anonimowi użytkownicy są blokowani, a uwierzytelnieni uzyskują dostęp. Należy uwzględnić zarówno pomyślną, jak i niepomyślną ścieżkę.
Szybkie sprawdzenie
Trzeba przetestować panel dostępny wyłącznie po zalogowaniu. Co sprawi, że test zadziała?
Podsumowanie: testy uwierzytelniania
Loguje się Pan przez klienta, korzysta z jego pamięci cookies i sprawdza zarówno ścieżki blokowane, jak i dozwolone. Uwierzytelnianie jest teraz w pełni przetestowane. 🔐
Ucz się Python dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 30
- Lekcje
- 120
Często zadawane pytania
Czy lekcja „Testowanie uwierzytelnionych endpointów” jest bezpłatna?
Tak — pełny tekst „Testowanie uwierzytelnionych endpointów” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Flask Academy, przejdź na CoddyKit PRO. Kurs Flask Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Testowanie uwierzytelnionych endpointów”?
Loguj się w testach, aby uzyskać dostęp do chronionych tras. Ćwiczysz Flask Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Flask Academy?
Nie wymagamy żadnego doświadczenia. Flask Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „Testowanie uwierzytelnionych endpointów”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Flask Academy?
Tak. Każda lekcja Flask Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Klient testowy i fixture'y
- Sprawdzanie tras i JSON-a
- Izolowanie testów za pomocą testowej bazy danych
- Testowanie uwierzytelnionych endpointów