Getestet mit:Raspberry Pi 2; Raspberry Pi B+; Python 2.7; Raspbian pre Jessie
Voraussetzungen:Raspberry Pi mit Raspbian Jessie und Internetverbindung (siehe Schritte 1-7 in der Einfuehrung)
0

Python Projektaufbau fuer Test-Driven Development

Echtes Test-Driven Development (TDD: zuerst Tests entwerfen, dann programmieren) auf dem Raspberry Pi ist oft nicht moeglich. Wie soll ein Test bestaetigen, dass z.B. eine Funksteckdose von einem 433Mhz Sender tatsaechlich geschaltet wurde? Dazu waere eine umfangreiche, hardwarebasierte Testumgebung erforderlich.
Trotzdem ist es empfehlenswert, TDD so weit wie moeglich zu betreiben, alles zu testen, was getestet werden kann und manuell ausfuehrbare Hardwaretests zu schreiben, deren Kommentare die Hardwareinteraktion beschreiben(zum Beispiel ‚# Dieser Test schaltet die Funksteckdose fuer 10 Sekunden ein.‘)

Installiere das Test-Driven setup
Boote den Raspberry Pi und gib im Terminal ein

Die installierten Module

  • Pytest um die Tests auszufuehren
  • Coverage zur Messung der Codeabdeckung
  • Sphinx zum dokumentieren des Projekts
  • IPython/IPDB fuers Debugging
  • Mock um Hardwareverhalten zu simulieren

Starte das Beispielprojekt

Beispieltests ausfuehren

Wenn die Installation erfolgreich war, wird ein erfolgreicher und ein gescheiterter Test ausgegeben:

TDD setup failed test

TDD setup mit gescheitertem Test

Mit sudo nano ~/MyProject_tdd/README.md wird die Datei README.md mit weiteren Informationen zur Benutzung geoeffnet.

Virtuelle Umgebung
Um die Zusatzmodule nicht systemweit, sondern nur fuer das Projekt zu installieren kann man vor dem installieren der requirements.txt mit pip eine virtuelle Umgebung einrichten und aktivieren.

Test-driven Projekt Dateistruktur
Die Test-Driven Dateistruktur erweitert das einfache Python-Projekt:

Complex file structure

Test-driven Projekt Dateistruktur

Sie enthaelt eine mit Sphinx gebaute Beispieldokumentation und ist eingerichtet fuer das Test-Driven Development mit Pytest und Coverage:
Test framework file structure

Testumgebung Dateistruktur

Die zusaetzlichen Dateien sind

  • htmlcov: enthaelt die Ergebnisse der Codeabdeckungsmessung mit Coverage
  • _build: enthaelt Sphinx html Dokumentation
  • index.rst: Hauptdatei zum erstellen der Dokumentation im ReStructured Text Format
  • MyProject/tests/test_myproject.py: Beispiel-Testdatei
Links
Test-driven Entwicklung Wiki: https://en.wikipedia.org/wiki/Test-driven_development
Hausautomation mit Funksteckdosen: http://www.knight-of-pi.org/de/preiswerte-hausautomatisierung-mit-dem-raspberry-pi/
Coverage Tutorial: http://www.knight-of-pi.org/de/professionell-programmieren-auf-dem-raspberry-pi-mit-coverage/
Sphinx Tutorial: http://www.knight-of-pi.org/de/dokumentation-eines-raspberry-pi-python-projekts-mithilfe-von-sphinx/
Mock Tutorial: http://www.knight-of-pi.org/de/software-testing-simuliere-grenzwerte-oder-physische-interaktionen-mit-mock/
Virtuelle Umgebung Tutorial: http://www.knight-of-pi.org/de/virtuelle-umgebungen-vereinfachen-die-projektverwaltung/
Einfache Python-Projektstruktur: http://www.knight-of-pi.org/de/standard-python-projekt-dateistruktur/
IPython und IPDB Grundlagen: http://www.knight-of-pi.org/de/fix-your-bugs-using-the-ipyhton-debugger-ipdb-on-a-raspberry-pi/
Test-Driven Development Wiki: https://en.wikipedia.org/wiki/Test-driven_development

Knight of Pi

Johannes Bergs aka Knight of Pi. Diploma in Bioinformatics, some Webdesign and Python coding then. Living in the beautiful city of Vienna.

Kommentar

Time limit is exhausted. Please reload CAPTCHA.