2013-04-17 16 views
6

Ich versuche, eine vollständige und saubere Art und Weise der Prüfung Python-Pakete zu implementieren, eine, die die Folowing Anforderungen passen würde:Lösen der Verwirrung durch zu viele Möglichkeiten, erzeugt in Python laufen Unittest

  • ausführen Tests auf saubere Maschinen ohne sie zu der Einrichtung (virtualenv)
  • sammeln Ergebnisse von mehrere Plattformen
  • Ergebnisse von Interpreten mehrere python
  • co sammeln de Abdeckung (Zusammenführen von Ergebnissen aus der mehrfachen Ausführung in einen einzigen Bericht)
  • in der Lage sein, XML-Code Berichterstattung Bericht zu generieren, so dass das Build-System verfolgen kann, wie sich diese im Laufe der Zeit ändern.
  • Lage disable Tests auf der Plattform basierend
  • Lauf vor den Tests mehrere Befehle zu ermöglichen, wie PEP8 oder autopep8
  • Lauf-Tests parallel.

verwenden ich mehrere Ansätze: nose + pytest, tox + pytest aber vor kurzem entdeckt, dass pytest Lage sein sollte, die meisten Sachen zu tun.

Das Hauptproblem ist, dass ich keinen klaren Vergleich darüber finden konnte, wann es besser wäre, den einen oder anderen Ansatz zu verwenden.

Kann jemand diese erklären und einige Anwendungsfälle oder Einschränkungen dieser Konfigurationen geben? ... nur um es klar zu machen, wenn man sich auf den einen oder anderen Weg begibt.

Am Ende hat ich diese Optionen haben will:

  • quicktest - lokal die Tests ausführen, ein Muss vor jedem commmit
  • fulltest - in vollen Tests, so dass sie über alle verfügbaren Plattformen ausgeführt werden, ein Muss bevor eine neue Version
+1

Wenn pytest alle Ihre Anforderungen erfüllt, warum sollten Sie eine andere Konfiguration in Betracht ziehen? Sicherlich wäre das am einfachsten. – pfctdayelise

Antwort

1

py.test machen deckt alle Ihre Bedürfnisse perfekt es Profis anderen Test Läufer wie Nase Vergleich:

  • Leuchten mit Dependency Injection - der Notwendigkeit von komplizierten oop für Testaufbau
  • einfaches, aber leistungsstarkes Plugin-System mit vielen nützlichen Plugins beseitigen - Plugins wie pytest-XDIST können Sie auf allen Plattformen testen, wie Sie benötigen, einschließlich Fenster, pytest-cov funktioniert die Abdeckung, pytest-Cache nur letzten fehlgeschlagenen Tests laufen hilft, etc
  • Parametrisierung Sie write-once-Lauf mehr Ansatzes für Tests unter Verwendung von deklarativen Parametern
  • Verwendung der einfachen assert-Anweisung verwenden kann vs komplizierte Java-like Syntax. assertEquals (http://pytest.org/latest/assert.html)
  • mehr und mehr