practices - python unittest setupclass




Komponententests in Python (6)

Verfügt Python über ein Unit-Testing-Framework, das mit dem Standard-xUnit-Style des Testframeworks kompatibel ist? Wenn ja, was ist es, wo ist es, und ist es gut?


@Greg: PyUnit ist in der Standardbibliothek als unittest enthalten


Betrachten Sie py.test . Nicht wirklich analog zu NUnit, aber sehr gut, mit netten Features wie Test Auto-Discovery und einem "Watch the Tests und Code - wenn etwas die Tests, die das letzte Mal fehlgeschlagen sind, etwas wiederholt. Sobald alle Tests bestehen, wechseln Sie auf die Tests, wenn sich etwas ändert. " Möglichkeit.


Es gibt auch PyUnit, was möglicherweise das ist, wonach Sie suchen.


Nie verwendet xUnit, also kann ich Ihnen nicht sagen, ob die Frameworks gut / schlecht sind vergleichsweise, aber hier ist ein Skript, das ich schrieb, die das unittest Framework verwendet (um die API funktioniert wie es sollte zu überprüfen), und die doctest (um zu überprüfen Beispiele ich habe Arbeit gegeben)

Mein einziges Problem ist die Überprüfung, ob eine Ausnahme ausgelöst wird. Sie ist leicht verschachtelt (Sie müssen eine Funktion / Lambda übergeben, die die Ausnahme auslöst, anstatt nur den Befehl selbst, wie der Rest des Frameworks). Es sollte zuverlässig sein und seit geraumer Zeit in der Standard-Python-Distribution enthalten sein.


Nase scheint die beste Kombination von Flexibilität und Bequemlichkeit zu sein. Es läuft Unittests, Doctests, Abdeckung (mit einer Erweiterung) und py.test-ähnliche Tests von einem Framework und tut es bewundernswert. Es hat genug Popularität, dass es einige IDE-Integration auch für Komodo Edit getan hat und ich würde nicht überrascht sein, es woanders zu sehen.

Ich mag es aus einem starken Grund: Ich mache fast immer Doktortitel, bevor ich ausführlichere Tests in einem anderen Rahmen schreibe. Das liegt daran, dass Doctests für einfache Tests zwei Fliegen mit einer Klappe schlagen. Sie erhalten ausführbare Tests (obwohl sie manchmal etwas ungeschickt sind, um gut zu schreiben) sowie API-Dokumentation und interaktive Dokumentation zur gleichen Zeit. Wenn Sie eine Befehlszeilenoption (--with-doctest) verwenden, werden diese mit der gebündelten Doctest-Erweiterung ausgeführt.

Ich sage das von py.test als mein früherer Favorit. Während es großartig ist, sind Nasentests mir ähnlich genug, dass ich es nicht vermisse, und ich mag die Integration der verschiedenen Testmethoden unter einem Dach sozusagen. YMMV, aber ich empfehle, einen guten Blick auf die Nase zu werfen, bevor Sie sich für eine andere entscheiden. Wenn Sie nicht mit py.test Tests vertraut sind, sollten Sie sie auch betrachten. Ich finde sie grandios, weil sie normalerweise so geschrieben sind, dass sie ohne das Test-Framework einfach ausgetestet werden können , was ein weniger trickreiches System in die Debugging-Sitzung einbindet. Ich halte das allein für unschätzbar, während sie meiner Meinung nach auch einfacher zu schreiben sind als unittest Tests.


Python verfügt über mehrere Test-Frameworks, einschließlich unittest , doctest und nose . Der größte Teil von xUnit ist unittest , was auf Python.org dokumentiert ist.





unit-testing