Professionelles Testen für Python mit pytest

22. April 2021, 9–16 Uhr

Automatisiertes Testen ist ein essenzielles Werkzeug für qualitativen Code. Das Framework pytest ermöglicht es, Tests sowohl übersichtlicher als auch unkomplizierter umzusetzen als dies mit Python-Bordmitteln wie dem unittest-Modul möglich wäre. Pytest lässt sich nahtlos mit existierenden Testsuites integrieren und bietet auch da viele Vorteile. Weiterhin lässt es sich problemlos an die eigenen Ansprüche anpassen und mit diversen Plug-ins erweitern.
Obwohl pytest primär auf Python ausgelegt ist, eignet es sich auch hervorragend als Basis für andere Systeme: So wird es etwa auch benutzt um IoT-Kühlschränke, Waschmaschinen, Automobil-Komponenten oder gar Audio-Codecs zu testen.

Personen, die noch nie einen Test geschrieben haben sind gleichermaßen willkommen wie solche, die bereits Test-Frameworks nutzen und mehr Wissen zu pytest sammeln wollen.

Vorkenntnisse

  • Grundkenntnisse zu Python und zu objektorientiertem Programmieren
  • Vorkenntnisse zum Software-Testing werden nicht benötigt
  • Der Kurs wird auf Deutsch durchgeführt, die dazugehörigen Slides sind jedoch in englischer Sprache verfasst

Lernziele

  • Einführung zu pytest mit zahlreichen Übungen
  • Best Practices für das Testen
  • Wie man mittels eigenen Plug-ins pytest erweitern kann

Agenda

9:00 – 10:30:
  • Einleitung und Terminologie: Warum automatisierte Tests, Arten von Tests, Aufgaben eines Test-Frameworks
  • Tests schreiben mit pytest: Installation, wichtige Features, Konfiguration, Assertions
  • Tests organisieren: „markers“, Tests parametrisieren mit Daten, Tests überspringen
10:45 – 12:15:
  • Abhängigkeiten modularisieren mit „fixtures“: Setup/Teardown, Dependency Injection
13:15 - 14:45:
  • Abhängigkeiten vermeiden mit Patching/Mocking: Warum, wann, wann lieber nicht, und wie
  • Mit bestehenden Testsuites und Frameworks umgehen: Existierende unittest/nose/Django-Testsuites ausführen, Strategien bei der Migration zu pytest
15:00 - 16:00:
  • Plugins: Automatisch Testdaten generieren mit „hypothesis“ (property-based testing), Testabdeckung (coverage), Nutzung mehrerer CPU-Cores/Maschinen und vieles mehr.
  • Eigene Plugins verfassen: Kurzübersicht der verfügbaren Hooks
Je nach Interesse/Zeit:
  • Offene Fragerunde: Platz für Fragen und Probleme bei der Integration von pytest in bestehende Projekte der Teilnehmenden
  • Je nach Zeit und Interessen des Publikums kann auch auf weitere Themen zu pytest oder zu verwandten Projekten (tox/devpi) eingegangen werden

 

Technische Anforderungen

Für den Kurs wird eine Online-Umgebung bereitgestellt (basierend auf JupyterLab und Ubuntu), so dass keine lokale Vorbereitungen nötig sind. Sie benötigen lediglich einen aktuellen Webbrowser.
Sofern Sie die Übungen lieber auf Ihrem lokalen System durchführen wollen, stellen Sie sicher, dass Sie Python 3.6+ sowie die Pakete "pytest hypothesis pytest-cov pytest-xdist" installiert haben. Weiterhin sollten Sie Ihr System so konfigurieren, dass Sie pytest (oder "py -m pytest") auf der Kommandozeile ausführen können. Beachten Sie jedoch, dass im Kurs aus Zeitgründen für eigene Umgebungen nur begrenzt Unterstützung geboten werden kann.

Speaker

 

Florian Bruhin
Florian Bruhin ("The Compiler") hat 2015 das pytest-Framework entdeckt und seither in diversen Firmen sowie an Konferenzen Vorträge und Workshops zu pytest durchgeführt. Er ist Mitentwickler und -Maintainer von pytest selbst sowie diversen Plug-ins. Sein Hauptprojekt qutebrowser, ein Webbrowser für Poweruser, wurde vom Hobby zum spendenfinanzierten Teilzeitjob.

enterPy-Newsletter

Sie möchten über die enterPy
auf dem Laufenden gehalten werden?

 

Anmelden