Einführung in Unit tests

Unit Tests sind kleine, sich selbst enthaltende Testmethoden, die unabhängig von anderen Methoden ausgeführt werden und sich nicht gegenseitig beeinflussen.

Folgende Regeln für unit tests sind zu beachten:

  • Schreiben Sie mindestens einen Test für jede Methode.
  • Schreiben Sie zunächst die Interface- und/oder stub-Methoden, dann die Tests. Vergewissern Sie sich, dass die Tests nicht bestanden werden (da der Code ja noch nicht geschrieben ist).
  • Erst jetzt sollte das neue Feature implementiert werden mit dem Ziel, den Test zu bestehen.
  • Wenn Sie nach einem Release einen Bug entdecken, beheben Sie ihn nicht einfach, sondern
    • schreiben Sie zunächst einen Test, der den Fehler demonstriert,
    • dann erst beseitigen Sie den Bug.

Unit tests erlauben Ihnen,

  • Ihre Software auch in entfernten Umgebungen überprüfen zu können;
  • beim Implementieren neuer Features nicht bereits bestehende zu kompromitieren;
  • bereits behobene Bugs nicht wieder einzuführen;
  • Zeit bei der Entwicklung einzusparen, da die Chancen fehlerhaften Code schnell zu erkennen, deutlich steigen;
  • Code schreiben und testen in derselben Umgebung auszuführen;
  • die Test-Abdeckung immer weiter zu erhöhen.

Unit Tests in Zope und Plone

Unit Tests im Zope-2/Plone-Kontext basieren meist auf ZopeTestCase, der das Python unittest-Modul verwendet. Dabei laufen die Unit Tests meistens in einer Sandbox (auch Test-Fixture genannt) ab.

PloneTestCase basiert auf ZopeTestCase, ist jedoch eher ein Integrationstest, der die Integration Ihrer und der zugrundeliegenden Komponenten wie ZODB und ZPublisher überprüft. PloneTestCase erstellt eine leere Zope-Instanz mit einer einzelnen Plone Site, einem Nutzer und dem Standard Mitglieder-Ordner. Ist der Test beendet, wird die Transaktion abgebrochen, so dass keine der durch den Test vorgenommenen Änderungen der Plone-Site erhalten bleibt.