Heim > Backend-Entwicklung > Python-Tutorial > Notizen zur Python-Studie – Unit-Test, UnitTest

Notizen zur Python-Studie – Unit-Test, UnitTest

黄舟
Freigeben: 2017-01-17 14:25:37
Original
1234 Leute haben es durchsucht

Der sogenannte Unit-Test ist eine Testart, die die Korrektheit eines Moduls, einer Funktion oder einer Klasse testet.


Die testgetriebene Entwicklungsmethode wird als Testgetriebene Entwicklung bezeichnet. Bei diesem Entwicklungsmodell handelt es sich nicht nur um Tests, sondern um eine Möglichkeit, Anforderungen zu zerlegen und die Codequalität sicherzustellen.


Unit-Tests stellen nicht nur sicher, dass die Funktion, das Modul oder die Klasse beim Testen unsere Anforderungen erfüllt. Gleichzeitig hilft es uns auch, die Klasse oder Funktion in Zukunft zu ändern. Wir müssen den Komponententest nur erneut ausführen, um sicherzustellen, dass unsere Änderung keine Auswirkungen auf die Funktion hat.


Natürlich erhöht Unit-Test auch die Codemenge erheblich.


Das Schreiben von Unit-Test-Code erfordert die Einführung des Unittest-Pakets von Python. Wir können eine neue Unit-Test-Klasse erstellen, aber diese Klasse muss die Klasse unitest.TestCase erben. Die Testmethode in der Testklasse muss mit test beginnen, sonst wird sie nicht ausgeführt. Dann können wir die Methoden in unitest.TestCase verwenden. Häufig verwendete Methoden sind:


assertEqual(self, first, second) #Beurteilen Sie, ob es sich um den erwarteten Wert handelt
assertTrue(bool) #Beurteilen Sie, ob es wahr ist
assertRaises(Exception) #Beurteilen Sie, ob es wahr oder falsch ist. Löst eine bestimmte Ausnahme aus.

Lassen Sie uns ein Beispiel geben:


Wir definieren zuerst eine benutzerdefinierte Klasse und testen sie dann in einem Unit-Test.


Dict.py

class Dict(dict):
def __init__(self, **kwargs):
super(Dict, self).__init__(**kwargs)
def __getattr__(self, item):
try:
return self[item]
except KeyError:
raise AttributeError
def __setattr__(self, key, value):
self[key] = value
import unittest
from Dict import Dictclass DictTest(unittest.TestCase):
def test_init(self):
d = Dict(a=100, b=200)
self.assertEqual(d.a, 100)
self.assertEqual(d.b, 200)
self.assertTrue(isinstance(d, dict))
def test_key(self):
d = Dict()
d['key'] = "300"
self.assertEqual(d["key"], "300")
def test_attar(self):
d = Dict()
d.attar = "attar"
self.assertTrue("attar" in d)
self.assertEqual(d.attar, "attar")
def test_keyError(self):
d = Dict()
with self.assertRaises(KeyError):
value = d["NotExisted"]
def test_attarError(self):
d = Dict()
with self.assertRaises(AttributeError):
value = d.not_existed
if __name__ == '__main__':
unittest.main()
Nach dem Login kopieren

Da wir eine Unterklasse von dict definiert haben, müssen wir gleichzeitig dessen Schlüssel und Wert testen ist eine Klasse, daher müssen wir auch ihre Attribute testen.


Die von uns definierte Unterklasse unittest.TestCase muss zwei Sätze schreiben:

if __name__ == '__main__':
unittest.main()
Nach dem Login kopieren

Damit wir sie wie eine normale Python-Datei ausführen können.


Darüber hinaus können wir mehrere Tests auch auf folgende Weise ausführen


python -m unittest DictTest
SetUp- und TearDown-Funktionen.

Die SetUp- und TearDown-Funktionen sind zwei Sonderfunktionen. Die Funktion „setUp“ wird vor dem Start aller Komponententests ausgeführt. Die Funktion „tearDown“ wird nach der Ausführung aller Komponententests ausgeführt. Die Hauptanwendungsszenarien dieser beiden Funktionen sind: Wenn Sie beispielsweise eine Verbindung zu einer Datenbank herstellen müssen, können Sie die Verbindung in der SetUp-Funktion starten und die Verbindung in der TearDown-Funktion schließen.

Das Obige sind die Python-Studiennotizen – Unit-Test, UnitTest-Inhalt. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (m.sbmmt.com)!


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage