pytest: Test Driven Development (nicht nur) für Python

Softwareentwicklung mit Open Source
08.09.2020


9:10 – 17:00 Uhr
HSLU Campus Rotkreuz
Max. Teilnehmer: 30

Einleitung

Automatisiertes Testen ist ein essenzielles Werkzeug für qualitativen Code. Das pytest-Framework 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 Plugins erweitern.

Obwohl pytest primär auf Python ausgelegt ist, eignet es sich auch hervorragend als flexible Basis für eigene Testabläufe für andere Systeme: So wird es etwa auch benutzt zur Überprüfung von IoT-Kühlschränken, Waschmaschinen, Automobil-Komponenten oder gar Audio-Codecs.

Dieser Workshop bietet eine Einführung zu pytest mit zahlreichen Übungen. Teilnehmende lernen anhand von Beispielen die „best practices“ für das Testen von Python-Code. Ausserdem werden Grundlagen gezeigt, wie man mittels eigenen Plugins pytest für diverse Einsatzzwecke erweitern und einsetzen kann.

Programm

Folgende Programmpunkte sind für den Workshop geplant:

  • 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.
  • Abhängigkeiten modularisieren mit „fixtures“: Setup/Teardown, Dependency Injection.
  • 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.
  • Plugins: Automatisch Testdaten generieren mit „hypothesis“ (property-based testing), Testabdeckung (coverage), Nutzung mehrerer CPU-Cores/Maschinen und vieles mehr.
  • Eigene Plugins verfassen: Verfügbare Hooks, Plugins als Teil einer Testsuite, Paketierung und Verteilung.
  • 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.

Der Workshop ist als „Hands-on“-Kurs konzipiert und enthält viele Übungen, womit die Teilnehmenden von Anfang an ihre eigenen Tests mit pytest schreiben können.

Kursziel

Die Teilnehmenden haben mit dem Workshop erste Praxiserfahrung gesammelt und Basiswissen erhalten, um mit pytest bestehende oder neue Projekte zu testen.

Adressaten

Der Workshop richtet sich an Python-Programmierer*innen und Tester*innen, welche gerne mehr über pytest lernen wollen. Personen, welche noch nie einen Test geschrieben haben sind gleichermassen willkommen wie solche, die bereits Test-Frameworks nutzen und mehr Wissen zu pytest sammeln wollen.

Voraussetzungen

Grundkenntnisse zu Python und zu objektorientiertem Programmieren (beispielsweise was eine Klasse oder Instanz ist) werden vorausgesetzt. Vorkenntnisse zum Software-Testing werden keine benötigt.

Der Kurs wird auf Deutsch durchgeführt, die dazugehörigen Slides sind jedoch in Englisch verfasst.

Infrastruktur

Eigener Laptop (Betriebssystem egal) mit einer Installation von Python 3: https://www.python.org

Referenten

Florian Bruhin

Bruhin Software


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 Plugins.