-
Notifications
You must be signed in to change notification settings - Fork 10
Scenariusz testowy dla nowego semestru
Na branchu new_semester_selenium_tests
utworzona została specjalna aplikacja testowa test_app
, która ma za zadanie testować przy użyciu Selenium cały scenariusz przygotowywania Systemu Zapisów pod nowy rok akademicki. Testy znajdują się w pliku test_app/tests.py
w katalogu głównym aplikacji. W rzeczywistości jest to jedna duża metoda testowa test_new_semester_scenario
w klasie NewSemesterTests
, w której po kolei wykonywane są odpowiednie czynności. Ponieważ użyto frameworka Selenium, w trakcie jej działania uruchamiana jest przeglądarka, w której "przeklikiwane" są kolejne strony Systemu Zapisów.
Scenariusz nowego semestru obejmuje następujące etapy:
- Propozycje nowych przedmiotów
- Głosowanie (czerwiec)
- Powstaje oferta przedmiotów
-> tworzenie edycji przedmiotów (muszą być utworzone przed korektą) - Korekta zimowa (środek września) (w międzyczasie zbierane są preferencje pracowników)
- Powstaje plan.txt, import planu
- Dodanie nowych studentów (ostatni dzień września)
- Import ECTS z pliku
- Generowanie T0
- ZAPISY
-> limit ECTS do jakiejś daty (uwaga: przedmioty M; lista kto zdał L z USOSWEB)
-> kolejki
-> w międzyczasie zmiany planu / nowe przedmioty / reklamacje ECTS (przegenerowanie T0) - Koniec zapisów: ręczne dopisywanie/zamiana studentów
- Korekta letnia (styczeń). Wróć do punktu 5.
Aktualnie testy obejmują punkty 1-7. Poniżej opisane zostały w skrócie czynności wykonywane w danym etapie scenariusza.
Na początku, w metodzie setUp, testowa baza danych wypełniana jest niezbędnymi obiektami - tworzone jest kilka obiektów User
(w tym jeden superuser), Student
, Employee
, CourseEntity
(podstawa przedmiotu, z różnymi statusami), 3 obiekty Semester
- semestr aktualnie trwający (letni) i przyszły semestr zimowy oraz letni, a na końcu 1 obiekt SystemState
, który przechowuje daty rozpoczęcia i zakończenia głosowania, korekty zimowej i korekty letniej.
Jako superuser wchodzimy w menu wyboru przedmiotów pod głosowanie. Następnie na liście zaznaczane są przedmioty, które chcemy poddać pod głosowanie i wybór zostaje zatwierdzony.
Uruchamiane jest głosowanie (edycja obiektu SystemState
). Następnie, po kolei dla każdego studenta, wchodzimy w panel głosowania (Oferta -> Głosowanie -> Głosuj) i oddajemy głosy, na końcu sprawdzając czy się powiodło. Gdy wszyscy studenci oddadzą głosy, w podsumowaniu głosowania weryfikowane są całościowe wyniki. Na końcu głosowanie jest zamykane.
Wybierane jest kilka przedmiotów, dla których tworzymy edycje (model Course
) na przyszły semestr zimowy (poprzez zwykłe odwołania do bazy danych, bez klikania).
Korekta przeprowadzana jest w dokładnie taki sam sposób jak głosowanie.
Tworzone są 2 słowniki: pierwszy zawiera pary (edycja przedmiotu, id), drugi pary (imię nazwisko pracownika, id obiektu pracownika). Następnie powstaje plik tekstowy z przykładowym planem (zgodny z formatem dla skryptu do importu). Słowniki, ścieżka do pliku oraz id przyszłego semestru zimowego są przekazywane do skryptu scheduleimport.py
, który tworzy odpowiednie grupy i terminy. Po zakończeniu działania skryptu usuwamy utworzony plik z planem i sprawdzamy, czy skrypt wykonał się poprawnie.
Nie ma (lub nie jest znany) żaden skrypt do dodawania nowych studentów, więc są oni tworzeni ręcznie.
Tworzymy przykładowy plik z punktami ects do zaimportowania (zgodny z formatem dla skryptu do importu) i przekazujemy ścieżkę do niego skryptowi 'ectsimport.py`. Na końcu sprawdzamy, czy liczba punktów dla każdego studenta się zgadza.
Przed rozpoczęciem testu należy upewnić się, że ma się zainstalowany pakiet xvfb
.
Test uruchamia się poniższym poleceniem z katalogu głównego aplikacji:
xvfb-run python manage.py test test_app --nomigrations
Do działania potrzebne są:
pip install selenium==2.53.6
firefox w wersji 45
http://www.askmetutorials.com/2016/03/install-firefox-45-on-ubuntu-1510-1404.html
sudo apt-get install xvfb
geckodriver
http://askubuntu.com/questions/870530/how-to-install-geckodriver-in-ubuntu
askubuntu.com
sudo apt-get install xvfb
Niestety, z winy Selenium może się zdarzyć, że test się wywali w trakcie działania, chociaż wszystko jest w porządku. Jest to spowodowane tym, że przy wczytywaniu strony Selenium może próbować szukać elementów, które się jeszcze nie załadowały. Zwykle rzucany jest wtedy wyjątek o tym, że pewien element nie istnieje. W takiej sytuacji warto uruchomić test ponownie.