Selenium-Tests für das OZG-Portal

Einleitung

Am Beispiel des Projektes »OZG-Portal«, soll der Einsatz von Seleniumtests demonstriert werden. Dafür ist eine lauffähige Instanz zu installieren:

Die Anleitung finden Sie unter:

gitlab.com/ozg/portal/server

Folgende Module werden für Selenium-Tests in Kombination mit pytest benötigt:

pip install -U selenium
pip install pytest_html

und im bin-Ordner der virtuellen Umgebung muss der Treiber für die Gecko-Engine (geckodriver), der Chrome-Treiber wird hier ausgelassen:

env
 └── bin
      ├── cookiecutter
      ├── coverage
      ├── geckodriver
      ├── pycodestyle
      ├── pytest
      ├── sphinx-build
      ├── sphinx-quickstart
      └── waitress-serve

Beispiel-Tests

im Ordner: ozg/f11n/portaldemo/tests/selenium befinden sich einige Tests, schauen Sie sich diese an und adaptieren Sie diese Beispiele.

Test unterschiedlich ausführen

Alle Test ausführen

Damit alle Tests ausgeführt werden können, muss die Anwendung in einer zweiten Shell gestartet sein und laufen. Dann genügt ein:

pytest

Um die Funktionalität der Seleniumtests besser verfolgen zu können, wurde der Parameter »–headless« deaktiviert, d.h ein neues Browserfenster wird mit dem Test geöffnet. Weil die Eingaben dann immer noch sehr schnell ablaufen, wird an verschiedenen Stellen für drei Sekunden eine Pause eigelegt.

Testen ohne Selenium-Tests

Selenium-Test sind langsam, weil eine laufende Instanz der Anwendung gestartet sein muss und die Browsersimulation auch alle Eingaben, wie ein Benutzer abarbeitet (klickt, Werte in die Felder einträgt, Checkboxen auswählt…) Deshalb sollten Selenium-Tests in einem separaten Ordner verwaltet werden. Sie lassen sich dann mit folgendem ignor-Befehl ausklammern.

pytest --ignore=ozg/f11n/portaldemo/tests/selenium

Einen einzelnen Test ausführen

Ein einzelner Test oder eine Gruppe von Tests kann über ein Suchmuster angesprochen werden, alle anderen Tests werden ignoriert. Im folgenden Fall werden nur Tests ausgeführt die »checkbox« im Funktionsnamen enthalten:

pytest  -k checkbox