{"id":743793,"date":"2023-08-11T16:08:14","date_gmt":"2023-08-11T21:08:14","guid":{"rendered":"https:\/\/blogging-techies.com\/ge\/unit-tests-mit-dem-python-unittest-modul\/"},"modified":"2023-08-11T16:08:14","modified_gmt":"2023-08-11T21:08:14","slug":"unit-tests-mit-dem-python-unittest-modul","status":"publish","type":"post","link":"https:\/\/blogging-techies.com\/ge\/unit-tests-mit-dem-python-unittest-modul\/","title":{"rendered":"Unit-Tests mit dem Python-Unittest-Modul"},"content":{"rendered":"<p>Hinweis: Im n\u00e4chsten Thema, das Sie lesen werden, erfahren Sie mehr \u00fcber: Unit-Tests mit dem Python-Unittest-Modul<\/p>\n<p>Kein guter Entwickler implementiert Code ohne umfangreiche Tests.  Unit-Testing ist der Prozess des Testens der einzelnen Module eines gro\u00dfen Programms.<\/p>\n<p>In diesem Artikel wird erl\u00e4utert, wie Sie Ihren Code mit dem Python-Unit-Test-Modul einem Unit-Test unterziehen k\u00f6nnen.  Lassen Sie uns zun\u00e4chst verstehen, welche Arten von Tests es gibt.<\/p>\n<p>Beim Testen gibt es manuelle Tests und automatisierte Tests. <strong>manueller Test<\/strong> Es handelt sich um eine Testtechnik, bei der Menschen nach Abschluss der Entwicklung manuell testen.  <strong>Automatisierungstests<\/strong> Es handelt sich um eine Testtechnik, bei der Programme den Test automatisch durchf\u00fchren und uns die Ergebnisse liefern.<\/p>\n<p>Sie h\u00e4tten verstanden, dass manuelle Tests zeitaufw\u00e4ndig und schwierig durchzuf\u00fchren sind.  Anschlie\u00dfend schreiben Entwickler Code, um Tests durchzuf\u00fchren (automatisierte Tests).  Bei automatisierten Tests gibt es verschiedene Arten von Tests.  Einige von ihnen sind <strong>Unit-Tests, Integrationstests, End-to-End-Tests, Stresstests, <\/strong>usw..,<\/p>\n<p>Schauen wir uns den Standardtestablauf an.<\/p>\n<ul>\n<li>Schreiben oder aktualisieren Sie den Code.<\/li>\n<li>Schreiben oder aktualisieren Sie Tests f\u00fcr verschiedene F\u00e4lle f\u00fcr Ihren Code.<\/li>\n<li>F\u00fchren Sie die Tests aus (entweder manuell oder mit einem Testl\u00e4ufer).<\/li>\n<li>Sehen Sie sich die Testergebnisse an.  Wenn Fehler auftreten, korrigieren Sie diese und wiederholen Sie die Schritte.<\/li>\n<\/ul>\n<p>Hier werden wir die wichtigste und grundlegendste Art von Tests besprechen <strong>Ger\u00e4tetest<\/strong>.  Lassen Sie uns ohne weitere Umschweife in das eigentliche Tutorial eintauchen.<\/p>\n<h2>Was ist ein Unit-Test?<\/h2>\n<p>Unit-Testing ist eine Technik zum Testen eines kleinen, in sich geschlossenen Codeblocks.  Der kleine Blockcode wird in den meisten F\u00e4llen eine Funktion sein.  Das Wort \u201eunabh\u00e4ngig\u201c bedeutet, dass es nicht von anderen Codeteilen im Projekt abh\u00e4ngt.<\/p>\n<p>Nehmen wir an, wir m\u00fcssen pr\u00fcfen, ob eine Zeichenfolge gleich ist <strong>\u201eGeekflare\u201c<\/strong> Oder nicht.  Daf\u00fcr haben wir eine Funktion geschrieben, die ein Argument entgegennimmt und zur\u00fcckgibt, wenn es gleich ist <strong>\u201eGeekflare\u201c <\/strong>Oder nicht.<\/p>\n<pre>def is_equal_to_geekflare(string):\n\treturn string == \"Geekflare\"<\/pre>\n<p>Die obige Funktion hat keine Abh\u00e4ngigkeiten von irgendeinem anderen Code.  So k\u00f6nnen wir es unabh\u00e4ngig testen, indem wir verschiedene Eingaben machen.  Der eigenst\u00e4ndige Codeabschnitt kann im gesamten Projekt verwendet werden.<\/p>\n<h2>Bedeutung von Unit-Tests<\/h2>\n<p>Im Allgemeinen kann Code aus separaten Bl\u00f6cken im gesamten Projekt verwendet werden.  Daher muss es gut geschrieben und getestet sein.  Unit-Tests sind Tests, mit denen diese Arten unabh\u00e4ngiger Codebl\u00f6cke getestet werden.  Was passiert, wenn wir f\u00fcr unser Projekt keine Unit-Tests verwenden?<\/p>\n<p>Nehmen wir an, wir testen keine kleinen Codebl\u00f6cke, die im gesamten Projekt verwendet werden.  Alle anderen Tests, wie Integrationstests, End-to-End-Tests usw., die die anderen kleinen Codebl\u00f6cke verwenden, schlagen m\u00f6glicherweise fehl.  Dies macht die App kaputt.  Deshalb m\u00fcssen die Grundbausteine \u200b\u200bdes Codes gut getestet werden.<\/p>\n<p>Jetzt wissen wir, wie wichtig Unit-Tests und schriftliche Unit-Tests f\u00fcr alle unabh\u00e4ngigen Codebl\u00f6cke sind.  Da wir Unit-Tests durchgef\u00fchrt haben, werden andere Tests wie Integrationstests, End-to-End-Tests usw. aufgrund des unabh\u00e4ngigen Codeblocks nicht fehlschlagen.<\/p>\n<p>In den n\u00e4chsten Abschnitten schauen wir uns an, was das Python-Unittest-Modul ist und wie wir das Unittest-Modul verwenden, um Unit-Tests in Python zu schreiben.<\/p>\n<p><strong><\/strong>Wir gehen davon aus, dass Sie sich mit Kursen, Modulen etc. auskennen.  von Python.  Wenn Sie mit fortgeschrittenen Python-Konzepten wie Klassen, Modulen usw. nicht vertraut sind, f\u00e4llt es Ihnen m\u00f6glicherweise schwer, die folgenden Abschnitte zu verstehen.<\/p>\n<h2>Was ist ein Python-Unit-Test?<\/h2>\n<p>Python Unittest ist ein integriertes Testframework zum Testen von Python-Code.  Es verf\u00fcgt \u00fcber einen Test-Runner, der es uns erm\u00f6glicht, die Tests ohne gro\u00dfen Aufwand durchzuf\u00fchren.  Wir k\u00f6nnen also das eingebaute verwenden <strong>Ger\u00e4tetest <\/strong>Modul zum Testen ohne Verwendung von Drittanbietermodulen.  Es \u00e4ndert sich jedoch je nach Ihren Anforderungen.  das eingebaute <strong>Ger\u00e4tetest <\/strong>Das Modul eignet sich gut f\u00fcr den Einstieg in das Testen in Python.<\/p>\n<p>Wir m\u00fcssen die folgenden Schritte ausf\u00fchren, um Python-Code mit dem Unittest-Modul zu testen.<\/p>\n<p><strong>#1.<\/strong> Tippe den Code ein.<\/p>\n<p><strong>#2. <\/strong>Importieren Sie das Modul Unittest.<\/p>\n<p><strong>#3.<\/strong> Erstellen Sie eine Datei, die mit dem Schl\u00fcsselworttest beginnt.  Zum Beispiel test_prime.py.  Das Schl\u00fcsselwort wird zur Identifizierung der Testdateien verwendet.<\/p>\n<p><strong>#4.<\/strong> Erstellen Sie eine Klasse, die die Klasse unittest.TestCase erweitert.<\/p>\n<p><strong>#5. <\/strong>Schreiben Sie Methoden (Tests) innerhalb der Klasse.  Jede Methode enth\u00e4lt je nach Ihren Anforderungen unterschiedliche Testf\u00e4lle.  Wir m\u00fcssen die Methode benennen, beginnend mit dem Schl\u00fcsselwort test.<\/p>\n<p><strong>#6.<\/strong> F\u00fchren Sie die Tests durch.  Wir k\u00f6nnen die Tests auf unterschiedliche Weise durchf\u00fchren.<\/p>\n<ul>\n<li>F\u00fchren Sie den Befehl python -m unittest test_filename.py aus.<\/li>\n<li>Wir f\u00fchren die Testdateien als allgemeine Python-Dateien mit dem Befehl python test_filename.py aus.  Damit diese Methode funktioniert, m\u00fcssen wir die Hauptmethode von Unittest in der Testdatei aufrufen.<\/li>\n<li>Und schlie\u00dflich mit der Discover-Methode.  Wir k\u00f6nnen die Tests automatisch mit dem Befehl python -m unittest Discovery ausf\u00fchren, ohne den Namen der Testdatei zu erw\u00e4hnen.  Sie finden die Tests anhand der von uns befolgten Namenskonvention.  Daher m\u00fcssen wir unsere Testdateien am Anfang mit dem Schl\u00fcsselwort test benennen.<\/li>\n<\/ul>\n<p>Im Allgemeinen vergleichen wir in Tests die Ausgabe des Codes mit der erwarteten Ausgabe.  Also, um die Ergebnisse zu vergleichen <strong>Ger\u00e4tetest <\/strong>bietet verschiedene Methoden.  Die Liste der Vergleichsfunktionen finden Sie hier.<\/p>\n<p>Sie k\u00f6nnen sie problemlos verstehen.  Sie sind einfach.<\/p>\n<p>Das ist eine Menge Theorie.  Jetzt m\u00fcssen wir uns mit der Codierung befassen.<\/p>\n<p>Wenn Sie Fragen zum Unittest-Modul haben, k\u00f6nnen Sie in der Dokumentation nachsehen und Ihre Zweifel ausr\u00e4umen.  Lassen Sie uns ohne weitere Verz\u00f6gerung das Unittest-Modul verwenden.<\/p>\n<h2>Unit-Tests in Python mit Unittest<\/h2>\n<p>Zuerst schreiben wir einige Funktionen und konzentrieren uns dann auf das Schreiben der Tests.  \u00d6ffnen Sie zun\u00e4chst einen Ordner in Ihrem bevorzugten Code-Editor.  Und erstellen Sie eine Datei namens utils.py.  F\u00fcgen Sie den folgenden Code in die Datei ein.<\/p>\n<pre>import math\n\n\ndef is_prime(n):\n    if n < 0:\n        return 'Negative numbers are not allowed'\n\n    if n <= 1:\n        return False\n\n    if n == 2:\n        return True\n\n    if n % 2 == 0:\n        return False\n\n    for i in range(2, int(math.sqrt(n)) + 1):\n        if n % i == 0:\n            return False\n    return True\n\n\ndef cubic(a):\n    return a * a * a\n\n\ndef say_hello(name):\n    return \"Hello, \" + name\n<\/pre>\n<p>Wir haben drei verschiedene Funktionen in der Datei utils.py.  Jetzt m\u00fcssen wir jede Funktion mit unterschiedlichen Testf\u00e4llen testen.  Schreiben wir die Tests f\u00fcr die erste Funktion is_prime.<\/p>\n<p><strong>#1.<\/strong> Erstellen Sie im Beispielordner eine Datei mit dem Namen test_utils.py als utils.py.<\/p>\n<p><strong>#2. <\/strong>Importieren Sie die Modul-Utils und Unittest.<\/p>\n<p><strong>#3.<\/strong> Erstellen Sie eine Klasse mit dem Namen TestUtils, die die Klasse unittest.TestCase erweitert.  Der Klassenname kann beliebig sein.  Versuchen Sie, der Klasse einen aussagekr\u00e4ftigen Namen zu geben.<\/p>\n<p><strong>#4. <\/strong>Schreiben Sie innerhalb der Klasse eine Methode namens test_is_prime, die sich selbst als Argument akzeptiert.<\/p>\n<p><strong>#5.<\/strong> Schreiben Sie verschiedene Testf\u00e4lle mit Argumenten f\u00fcr is_prime und vergleichen Sie die Ausgabe mit der erwarteten Ausgabe.<\/p>\n<p><strong>#6.<\/strong> Beispieltestfall self.assertFalse(utils.is_prime(1)).<\/p>\n<p><strong>#7.<\/strong> Wir erwarten, dass die Ausgabe von is_prime(1) im obigen Fall falsch ist.<\/p>\n<p><strong>#8.<\/strong> \u00c4hnlich wie im vorherigen Fall werden wir basierend auf der Funktion, die wir testen, verschiedene Testf\u00e4lle durchf\u00fchren.<\/p>\n<p>Schauen wir uns die Tests an.<\/p>\n<pre>import unittest\n\nimport utils\n\n\nclass TestUtils(unittest.TestCase):\n    def test_is_prime(self):\n        self.assertFalse(utils.is_prime(4))\n        self.assertTrue(utils.is_prime(2))\n        self.assertTrue(utils.is_prime(3))\n        self.assertFalse(utils.is_prime(8))\n        self.assertFalse(utils.is_prime(10))\n        self.assertTrue(utils.is_prime(7))\n        self.assertEqual(utils.is_prime(-3),\n                         \"Negative numbers are not allowed\")\n\n\nif __name__ == '__main__':\n    unittest.main()\n<\/pre>\n<p>Wir rufen die Haupteinheitstestmethode des Moduls auf, um die Tests mit dem Befehl python filename.py auszuf\u00fchren.  Machen Sie nun die Tests.<\/p>\n<p>Sie erhalten eine Ausgabe \u00e4hnlich der folgenden.<\/p>\n<pre>$ python test_utils.py \n.\n----------------------------------------------------------------------\nRan 1 test in 0.001s\n\nOK<\/pre>\n<p>Versuchen Sie nun, die Testf\u00e4lle auch f\u00fcr andere Funktionen zu schreiben.  \u00dcberlegen Sie sich verschiedene F\u00e4lle f\u00fcr die Funktionen und schreiben Sie Tests daf\u00fcr.  Schauen Sie sich die folgenden Tests an, die zur obigen Klasse hinzugef\u00fcgt wurden.<\/p>\n<pre>...\n\n\nclass TestUtils(unittest.TestCase):\n    def test_is_prime(self):\n        ...\n\n    def test_cubic(self):\n        self.assertEqual(utils.cubic(2), 8)\n        self.assertEqual(utils.cubic(-2), -8)\n        self.assertNotEqual(utils.cubic(2), 4)\n        self.assertNotEqual(utils.cubic(-3), 27)\n\n    def test_say_hello(self):\n        self.assertEqual(utils.say_hello(\"Geekflare\"), \"Hello, Geekflare\")\n        self.assertEqual(utils.say_hello(\"Chandan\"), \"Hello, Chandan\")\n        self.assertNotEqual(utils.say_hello(\"Chandan\"), \"Hi, Chandan\")\n        self.assertNotEqual(utils.say_hello(\"Hafeez\"), \"Hi, Hafeez\")\n\n\n...\n<\/pre>\n<p>Wir verwenden nur einige der Vergleichsfunktionen des Unittest-Moduls.  Die vollst\u00e4ndige Liste finden Sie hier.<\/p>\n<p>Wir haben gelernt, wie man Unit-Tests mit dem Unittest-Modul schreibt.  Jetzt ist es an der Zeit, verschiedene M\u00f6glichkeiten zur Durchf\u00fchrung Ihrer Tests zu pr\u00fcfen.<\/p>\n<h2>So f\u00fchren Sie Tests mit Unittest durch<\/h2>\n<p>Eine M\u00f6glichkeit, die Testf\u00e4lle auszuf\u00fchren, haben wir bereits im vorherigen Abschnitt gesehen.  Schauen wir uns die beiden anderen M\u00f6glichkeiten zum Ausf\u00fchren von Tests mit dem Unittest-Modul an.<\/p>\n<p><strong>#1. <\/strong>Verwendung des Dateinamens und des Moduls unittest.<\/p>\n<p>Bei dieser Methode verwenden wir das Unittest-Modul und den Dateinamen, um die Tests auszuf\u00fchren.  Der Befehl zum Ausf\u00fchren der Tests lautet python -m unittest filename.py.  In unserem Fall lautet der Befehl zum Ausf\u00fchren der Tests python -m unittest test_utils.py.<\/p>\n<p><strong>#2.<\/strong> Verwenden der Discover-Methode<\/p>\n<p>Wir verwenden die Erkennungsmethode des Unittest-Moduls, um alle Testdateien automatisch zu erkennen und auszuf\u00fchren.  Um Testdateien automatisch zu erkennen, m\u00fcssen wir sie beginnend mit dem Schl\u00fcsselwort test benennen.<\/p>\n<p>Der Befehl zum Ausf\u00fchren von Tests mit der Discover-Methode lautet python -m unittest discover.  Der Befehl erkennt alle Dateien, deren Namen mit test beginnen, und f\u00fchrt sie aus.<\/p>\n<h3>Fazit \ud83d\udc69\u200d\ud83d\udcbb<\/h3>\n<p>Unit-Tests sind grundlegende Tests in der Welt der Programmierung.  Es gibt viele andere Tests in der realen Welt.  Versuchen Sie, sie einzeln zu lernen.  Ich hoffe, dieses Tutorial hilft Ihnen beim Schreiben grundlegender Tests in Python mit dem Unittest-Modul.  Es gibt Bibliotheken von Drittanbietern wie Pytest, Robot Framework, Nose, Nose2, Slash usw.  Sie k\u00f6nnen sie basierend auf Ihren Projektanforderungen erkunden.<\/p>\n<p>Viel Spa\u00df beim Testen \ud83d\ude0e<\/p>\n<p>M\u00f6glicherweise interessieren Sie sich auch f\u00fcr Fragen und Antworten zum Python-Interview.<\/p>\n   ","protected":false},"excerpt":{"rendered":"<p>Hinweis: Im n\u00e4chsten Thema, das Sie lesen werden, erfahren Sie mehr \u00fcber: Unit-Tests mit dem Python-Unittest-Modul Kein guter Entwickler implementiert Code ohne umfangreiche Tests. Unit-Testing ist der Prozess des Testens der einzelnen Module eines gro\u00dfen Programms. In diesem Artikel wird erl\u00e4utert, wie Sie Ihren Code mit dem Python-Unit-Test-Modul einem Unit-Test unterziehen k\u00f6nnen. Lassen Sie uns [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":743794,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","fifu_image_url":"https:\/\/blogging-techies.com\/wp-content\/uploads\/2023\/06\/2.webp","fifu_image_alt":""},"categories":[7],"tags":[],"_links":{"self":[{"href":"https:\/\/blogging-techies.com\/ge\/wp-json\/wp\/v2\/posts\/743793"}],"collection":[{"href":"https:\/\/blogging-techies.com\/ge\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogging-techies.com\/ge\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogging-techies.com\/ge\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blogging-techies.com\/ge\/wp-json\/wp\/v2\/comments?post=743793"}],"version-history":[{"count":0,"href":"https:\/\/blogging-techies.com\/ge\/wp-json\/wp\/v2\/posts\/743793\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogging-techies.com\/ge\/wp-json\/wp\/v2\/media\/743794"}],"wp:attachment":[{"href":"https:\/\/blogging-techies.com\/ge\/wp-json\/wp\/v2\/media?parent=743793"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogging-techies.com\/ge\/wp-json\/wp\/v2\/categories?post=743793"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogging-techies.com\/ge\/wp-json\/wp\/v2\/tags?post=743793"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}