{"id":173993,"date":"2023-04-09T19:47:30","date_gmt":"2023-04-09T18:47:30","guid":{"rendered":"https:\/\/liora.io\/de\/?p=173993"},"modified":"2026-02-06T06:55:38","modified_gmt":"2026-02-06T05:55:38","slug":"python-test-nose","status":"publish","type":"post","link":"https:\/\/liora.io\/de\/python-test-nose","title":{"rendered":"Python Test Nose: Erfahre mehr \u00fcber die Unittest-Erweiterung"},"content":{"rendered":"<p><strong>Python Test Nose:\nNose ist ein Framework zur Testautomatisierung in Python, das auf der Standardbibliothek unittest basiert. Erfahre mehr \u00fcber seine Vorteile, seine Funktionen, die Unterschiede zwischen den Versionen 1 und 2 und wie du eine Schulung absolvieren kannst, um es zu beherrschen!<\/strong><\/p>\nDas unittest-Modul von Python wird f\u00fcr das Unit-Testing von Quellcode verwendet, insbesondere in den Bereichen Data Science und Machine Learning. Dieses Standard-Framework erfordert jedoch viel Code und zwingt dazu, die Tests in gro\u00dfe Klassen einzubinden.\n\nAls Alternative gibt es verschiedene Frameworks zur Testautomatisierung, wie z. B. PyUnit, Pytest, Robot oder Cucumber. Diese Tools vereinfachen die Arbeit der Entwickler am Testcode.\n\nDas Automatisierungs-Framework Nose ist eine Erweiterung von Unittest, um das Testen zu vereinfachen. Hier erf\u00e4hrst du alles, was du wissen musst!\n<h3>Was ist der Nose-Framework?<\/h3>\n<a href=\"https:\/\/pypi.org\/project\/nose\/\">Nose ist ein Python-Framework<\/a> zur Automatisierung von Tests, das 2005 von Jason Pellerin entwickelt wurde. Sein Ziel war es, die gleichen <strong>Testidiome wie py.test<\/strong> in einem Paket anzubieten, das einfacher zu installieren und zu verwenden ist.\n\n<a href=\"https:\/\/docs.python.org\/3\/library\/unittest.html\">Obwohl es auf unittest basiert,<\/a> vereinfacht sein reichhaltiges Plugin-\u00d6kosystem das Testen. Seine verschiedenen Plugins helfen bei der Testausf\u00fchrung, beim parallelen oder Multi-Prozess-Testing, beim Log-Management und bei der Berichterstattung.Es erm\u00f6glicht auch die Ausf\u00fchrung von Doctests, Unit-Tests oder Tests ohne &#8222;Boilerplate&#8220;-Code.\n\nDar\u00fcber hinaus f\u00fcgen Plug-ins die Unterst\u00fctzung von Dekorateuren, Dekorationen, parametrisierten Tests, Klassen und Modulen hinzu. Ein weiterer Vorteil ist die Entdeckung von Testf\u00e4llen und die automatische Sammlung.\n<figure>\n\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"873\" height=\"564\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/04\/nose-testing1.jpg\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/04\/nose-testing1.jpg 873w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/04\/nose-testing1-300x194.jpg 300w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/04\/nose-testing1-768x496.jpg 768w\" sizes=\"(max-width: 873px) 100vw, 873px\"><figcaption><\/figcaption><\/figure>\n<h3>Python Test Nose: Was ist Nose2 ?<\/h3>\n<strong>Nose2<\/strong> ist der Nachfolger von Nose, der auf dem Plugin-Zweig von unittest2 basiert. Es bietet eine bessere Plugin-API und vereinfacht die internen Prozesse und Schnittstellen.\n\nViele Plugins sind direkt in das <strong>Nose2-Modul<\/strong> eingebettet und werden standardm\u00e4\u00dfig geladen. Sie helfen u. a. bei der Parametrisierung von Tests, der Organisation von Testfixtures in Schichten, der Erfassung von Log-Meldungen und der Berichterstattung.\n\nDie parallele Testausf\u00fchrung wird immer noch nicht unterst\u00fctzt, aber das Laden von Plugins ist sehr einfach. F\u00fcge einfach Modulnamen zur Plugin-Liste im Abschnitt [unittest] der Konfigurationsdatei hinzu. Es ist auch m\u00f6glich, das Plugin-Modul mit dem Argument -plugin auf der Befehlszeile zu \u00fcbergeben.\n\nObwohl Nose2 als offizieller Nachfolger auf den Markt gebracht wurde, entscheiden sich viele Entwickler weiterhin f\u00fcr die Version 1.3.7. Daher werden beide Iterationen des <a href=\"https:\/\/liora.io\/de\/was-ist-ein-framework\">Frameworks<\/a> verwendet.\n<h3>Python Test Nose: So funktioniert&#8217;s<\/h3>\nDie <strong>Testentdeckung mit Nose<\/strong> wird durch mehrere Regeln geregelt. Wie alle Python-Automatisierungsframeworks f\u00fchrt Nose automatisch alle Tests aus, die sich im \u00fcbergeordneten Ordner und seinen Unterordnern befinden.\n\nDie vom Framework ausgew\u00e4hlten Module oder Dateien m\u00fcssen mit &#8222;&#8218;test_'&#8220; beginnen, ebenso wie die Methoden. Ebenso m\u00fcssen Testklassen, die Methoden enthalten, mit &#8222;&#8218;Test'&#8220; beginnen.\n\nDies sind einige der Namenskonventionen, die f\u00fcr das Testen mit Nose verwendet werden. Die vollst\u00e4ndigen Regeln sind auf der offiziellen Nose-Website zu finden.\n\nMit<strong> Nose2<\/strong> implementiert ein Plugin die automatische Testentdeckung. Dieses Plugin sucht in Paketen und Verzeichnissen, deren Namen mit &#8222;test&#8220; beginnen, nach Testmodulen oder -dateien und aktiviert den Hook loadTestsFromModule() f\u00fcr alle Entdeckungen. Dies erm\u00f6glicht es anderen Plugins, die Tests zu laden.\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex is-content-justification-center\"><div class=\"wp-block-button \"><a class=\"wp-block-button__link wp-element-button \" href=\"https:\/\/liora.io\/de\/terminvereinbarung\">Nose anwenden lernen &#8211; Terminvereinbarung<\/a><\/div><\/div>\n\n<h3>Definition und Funktionsweise von Fixtures<\/h3>\nDas <strong>Nose-Framework<\/strong> erm\u00f6glicht Fixtures f\u00fcr die setup- und teardown-Methoden auf Test-, Paket-, Klassen- oder Modulebene. Dadurch werden unn\u00f6tige Initialisierungen vermieden, die die Leistung beeintr\u00e4chtigen k\u00f6nnen, wenn Tests h\u00e4ufig durchgef\u00fchrt werden.\n\nWie bei den Fixtures py.test oder unittest wird die setup-Methode immer vor einem Test oder einer Sammlung von Tests ausgef\u00fchrt. Die teardown-Methode wird gestartet, wenn die setup-Methode erfolgreich ausgef\u00fchrt wurde.\n\nDer Status des aktuellen Tests wird dabei nicht ber\u00fccksichtigt. Somit erweitert Nose das Fixture-Modell von unittest f\u00fcr setup und teardown.\n\nFixtures k\u00f6nnen auf mehreren Ebenen durchgef\u00fchrt werden. Zun\u00e4chst werden bei Paketen, die mehrere Tests zusammenfassen, die setup- und teardown-Methoden einmal pro Testlauf gestartet. Dadurch wird vermieden, dass setup- und teardown-Methoden erstellt werden, die einmal pro Modul oder Testfall gestartet werden.\n\nEs ist auch m\u00f6glich, die setup- und teardown-Methoden auf Modulebene zu definieren. Die entsprechenden Methoden werden dann am Anfang und am Ende des Moduls ausgef\u00fchrt.\n\nFixtures k\u00f6nnen setup und teardown auch auf Funktionsebene definieren. Wie ihre Namen schon sagen, werden die setup_function und teardown_function vor und nach einem Testfunktionsaufruf ausgef\u00fchrt.\n\nEs gibt keine spezielle Namenskonvention, aber es ist obligatorisch, die setup-Methode mit dem aus Nose importierten @with_setup-Dekorator anzuwenden.\n\nSchlie\u00dflich ist eine <strong>Testklasse eine Klasse<\/strong>, die in einem Testmodul definiert ist, das test_Match entspricht oder eine Unterklasse von unittest.TestCase ist. Die jeweiligen setup- und teardown-Funktionen werden am Anfang und am Ende der Testmethodenklasse ausgef\u00fchrt. Die setup-Methode muss mit dem Dekorator @classmethod angewendet werden.\n<figure>\n\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"640\" height=\"427\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/04\/nose-testing2.jpg\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/04\/nose-testing2.jpg 640w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/04\/nose-testing2-300x200.jpg 300w\" sizes=\"(max-width: 640px) 100vw, 640px\">\n\n<figcaption><\/figcaption><\/figure>\n<h3>Python Test Nose: Parametrisiertes Testen<\/h3>\nDie Version 1.3.7 des Nose-Frameworks bietet keine direkte Unterst\u00fctzung f\u00fcr parametrisiertes Testen. Dazu muss das Paket &#8222;parameterized&#8220; verwendet werden, das fr\u00fcher &#8222;nose-parameterized&#8220; hie\u00df.\n\nDieses Paket ist mit allen anderen<strong> Frameworks zur Testautomatisierung in <a href=\"https:\/\/liora.io\/de\/python-programm-fuer-dummies-teil-1\">Python<\/a> kompatibel<\/strong>. Es wird installiert, indem du den Befehl &#8222;pip install parameterized&#8220; im Terminal eingibst.\n\nNose2 seinerseits erfordert nicht die Installation eines separaten Pakets f\u00fcr die Parametrisierung von Tests. Es werden mehr Arten von parametrisierten Tests unterst\u00fctzt. Testgeneratoren werden auch von den Testklassen, Testfunktionen und TestCase-Unterklassen von unittest unterst\u00fctzt.\n<h3>Python Test Nose: Paralleles Testen<\/h3>\nWie andere beliebte Test-Frameworks unterst\u00fctzt auch Nose paralleles Testen. Das Plugin nose.plugins.multiprocess kann verwendet werden, um den Testlauf auf eine konfigurierbare Anzahl von Prozessen zu parallelisieren.\n\nDieser Ansatz beschleunigt <strong>CPU-gebundene Testl\u00e4ufe, ist aber auch sehr vorteilhaft f\u00fcr IO-gebundene Tests<\/strong>, bei denen die meiste Zeit f\u00fcr das Warten auf die Ankunft von Daten aufgewendet wird. Die offizielle Website von Nose enth\u00e4lt alle wichtigen Informationen \u00fcber paralleles Testen.\n\nDas mp-Plugin, das in <strong>Nose2 Version 0.3<\/strong> eingef\u00fchrt wurde, erm\u00f6glicht die Verteilung von Tests auf mehrere Prozesse. Es ist jedoch wichtig zu \u00fcberpr\u00fcfen, ob seine Verwendung nicht zu Konflikten f\u00fchrt.\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex is-content-justification-center\"><div class=\"wp-block-button \"><a class=\"wp-block-button__link wp-element-button \" href=\"https:\/\/liora.io\/de\/terminvereinbarung\">Testing lernen<\/a><\/div><\/div>\n\n<h3>Nose vs. Nose2: Was sind die Unterschiede?<\/h3>\nNose und Nose2 weisen mehrere wichtige Unterschiede auf. Zun\u00e4chst einmal ist Nose2 f\u00fcr die aktuellen <strong>Python-Versionen<\/strong> verf\u00fcgbar, w\u00e4hrend die erste Nose nur bis zur Version 2.4 unterst\u00fctzt wird.\n\nWie unittest2 unterst\u00fctzt auch Nose2 nur Fixtures auf Modul- oder Klassenebene. Fixtures auf Paketebene werden nicht mehr unterst\u00fctzt.\n\nAu\u00dferdem ben\u00f6tigt Nose2 keinen benutzerdefinierten Importer, da die Testmodule mit __import__() importiert werden. Die Unterst\u00fctzung f\u00fcr parametrisierte und generierte Tests wird auch auf die TestCase-Klassen, -Funktionen und -Unterklassen von unittest ausgeweitet.\n\nW\u00e4hrend Nose setuptools-Einstiegspunkte zum Laden von Plugins verwendet, l\u00e4dt Nose2 keine Plugins auf das Testsystem und zwingt dazu, die Plugins in den Konfigurationsdateien aufzulisten.\n\nSchlie\u00dflich m\u00fcssen alle Konfigurationen \u00fcber <strong>Konfigurationsdateien auf Nose2<\/strong> vorgenommen werden. Dies ist bei der ersten Version nicht der Fall, da die Konfigurationseinstellungen als Kommandozeilenoptionen verf\u00fcgbar sein m\u00fcssen. Daher ist es besser, Nose2 f\u00fcr wiederholte Run-Tests zu verwenden, da die Konfiguration in besser lesbaren .cfg-Konfigurationsdateien gespeichert wird.\n<figure>\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/python.libhunt.com\/compare-nose2-vs-nose\">\n<img decoding=\"async\" width=\"886\" height=\"473\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/04\/nose-vs-nose2.jpg\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/04\/nose-vs-nose2.jpg 886w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/04\/nose-vs-nose2-300x160.jpg 300w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/04\/nose-vs-nose2-768x410.jpg 768w\" sizes=\"(max-width: 886px) 100vw, 886px\">\t\t\t\t\t\t\t\t<\/a>\n\n<figcaption><\/figcaption><\/figure>\n<h3>Python Test Nose &#8211; Wie verwende ich es ?<\/h3>\nUm das <strong>Nose-Framework zu installieren,<\/strong> f\u00fchre einfach den Befehl &#8222;pip install nose&#8220; im Terminal aus. Das Nose-Paket kann mit &#8222;import nose&#8220; im Code importiert werden, aber dieser Schritt ist optional.\n\nWenn du bestimmte Module verwendest, m\u00fcssen diese mit &#8222;import Nose.&lt;module_name&gt;&#8220; im Code importiert werden. Da das Nose-Modul sowohl f\u00fcr die bestehende Python-Distribution als auch f\u00fcr nosetests.exe installiert wird, ist es m\u00f6glich, die Tests mit den Befehlen &#8222;nosetests &lt;file_name.py&gt;&#8220; oder &#8222;python -m nose &lt;file_name.py&gt;&#8220; auszuf\u00fchren.\n\nUm Nose2 zu installieren, tippe den Befehl &#8222;pip install nose2&#8220; ein. Das Nose2-Paket kann mit &#8222;import nose2&#8220; in die Implementierung importiert werden, und ein bestimmtes Modul des Pakets kann mit &#8222;from nose2.&lt;package_name&gt; import &lt;module_name&gt;&#8220; importiert werden. Der Befehl, um einen Test mit Nose2 auszuf\u00fchren, lautet &#8222;nose2 &#8211;verbose &lt;filename_without_.py&gt;&#8220;.\n<h3>Fazit: Nose vereinfacht die Testautomatisierung<\/h3>\nDu kennst jetzt den <strong>Nose-Framework f\u00fcr das Testen<\/strong>. Diese Erweiterung von unittest vereinfacht das Testen, und ihr Hauptvorteil ist, dass sie die Notwendigkeit von Boilerplate-Code eliminiert. Seine verschiedenen Plugins f\u00fcgen Unterst\u00fctzung f\u00fcr Dekoratoren, Fixtures, parametrisiertes Testen und vieles mehr hinzu.\n\nUm zu lernen, wie man Python, seine Frameworks und Bibliotheken f\u00fcr Data Science und Machine Learning verwendet, bist Du genau richtig bei Liora.\n\n<strong>Unsere verschiedenen Kurse beinhalten ein Modul, das dieser Programmiersprache gewidmet ist.<\/strong>\n\nIn diesen <a href=\"https:\/\/liora.io\/de\/unsere-aus-und-weiterbildungen\">Kursen<\/a> kannst du alle F\u00e4higkeiten erwerben, die du als Data Analyst, Data Scientist, Data Engineer, Machine Learning Engineer oder Data Product Manager ben\u00f6tigst.\n\nAlle unsere Programme k\u00f6nnen als BootCamp oder Weiterbildung absolviert werden, und unsere Organisation ist f\u00fcr den Bildungsgutschein zugelassen. Entdecke Liora!\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex is-content-justification-center\"><div class=\"wp-block-button \"><a class=\"wp-block-button__link wp-element-button \" href=\"https:\/\/liora.io\/de\/unsere-aus-und-weiterbildungen\">Weiterbildung f\u00fcr Nose<\/a><\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Python Test Nose: Nose ist ein Framework zur Testautomatisierung in Python, das auf der Standardbibliothek unittest basiert. Erfahre mehr \u00fcber seine Vorteile, seine Funktionen, die Unterschiede zwischen den Versionen 1 und 2 und wie du eine Schulung absolvieren kannst, um es zu beherrschen! Das unittest-Modul von Python wird f\u00fcr das Unit-Testing von Quellcode verwendet, insbesondere [&hellip;]<\/p>\n","protected":false},"author":76,"featured_media":173994,"comment_status":"open","ping_status":"open","sticky":false,"template":"elementor_theme","format":"standard","meta":{"_acf_changed":false,"editor_notices":[],"footnotes":""},"categories":[2476],"class_list":["post-173993","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cloud-dev"],"acf":[],"_links":{"self":[{"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/posts\/173993","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/users\/76"}],"replies":[{"embeddable":true,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/comments?post=173993"}],"version-history":[{"count":1,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/posts\/173993\/revisions"}],"predecessor-version":[{"id":217629,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/posts\/173993\/revisions\/217629"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/media\/173994"}],"wp:attachment":[{"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/media?parent=173993"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/categories?post=173993"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}