Nach dem Lesen dieses Artikels hilft der Artikel den Lesern, die folgenden drei Ziele zu erreichen.
OS: macOS Mojava 10.14.6 Python-Version: 3.7.1
Tests werden geschrieben **, um die Qualität des Quellcodes sicherzustellen. ** ** **
Können Sie dem Quellcode vertrauen, der Ihnen übergeben wurde, als Ihnen mitgeteilt wurde, dass Sie den perfekten Quellcode ohne Fehler geschrieben haben? Wenn es Leute gibt, die keine Fehler machen, können Sie ihnen vertrauen. Aber Menschen machen oft Fehler.
Wenn der Test zu einem gewissen Grad geschrieben wurde, können Sie der Qualität des Quellcodes vertrauen. Wenn Sie einen Test haben, können Sie ihn auch als Kriterium verwenden, um zu beurteilen, ob der Quellcode korrekt erstellt wurde **.
Jetzt schreiben wir den Test in Python!
Stellen Sie sich eine Methode vor, die die maximal zu testende Verpflichtung berechnet. Das maximale Engagement in Englisch ist * Greatest Common Divisor *. Nehmen wir das Akronym und nennen wir die Datei "gcd.py".
gcd.py
def gcd(a, b):
#Irgendwie a,Berechnen Sie das maximale Versprechen von b
return #Der Rückgabewert ist die maximale Verpflichtung
Es wird angenommen, dass die Argumente a und b von gcd () als ganze Zahlen eingegeben werden und die maximalen Versprechen von a und b als Rückgabewert zurückgegeben werden.
Nachdem die Spezifikationen der zu testenden Funktion festgelegt wurden, schreiben wir den Testcode.
Dieses Mal verwenden wir ein Modul namens "unittest", um Testcode in Python zu schreiben. Da es standardmäßig installiert ist, muss es nicht installiert werden. Importieren wir es sofort.
test_gcd.py
import unittest
from gcd import gcd
Importieren wir auch die Funktion gcd
von gcd.py
, um die zu testende gcd () zu testen.
Jetzt können Sie Ihren Testcode schreiben.
Als nächstes erstellen wir einen Testfall.
Ein Testfall ist eine ** Eingabe und eine oder mehrere Definitionen der erwarteten Ausgabe von der Eingabe **, um sicherzustellen, dass die Funktionalität eines Moduls oder einer Klasse ordnungsgemäß funktioniert.
Erstellen Sie zunächst eine Klasse, die Testfälle enthält.
test_gcd.py
import unittest
from gcd import gcd
class GCDTest(unittest.TestCase):
pass
** Testfälle werden deklariert, indem die TestCase-Klasse des unittest-Moduls geerbt wird **.
Durch das Erben von "unittest.TestCase" können Sie die zum Erstellen eines Testfalls erforderlichen Methoden verwenden.
Der Klassenname (Testfallname) testet die maximale Verpflichtung, daher habe ich GCDTest gewählt.
Schreiben wir nun einen Test für die Methode, mit der das maximale Engagement berechnet wird.
test_gcd.py
import unittest
from gcd import gcd
class GCDTest(unittest.TestCase):
def test_gcd(self):
self.assertEqual(15, gcd(30, 15))
pass
Implementierte eine Methode namens test_gcd
.
Dieses Mal möchten wir eine Methode implementieren, um das maximale Versprechen von zwei ganzen Zahlen zu berechnen. Wenn also a = 30, b = 15 eingegeben wird, muss der Rückgabewert 15 sein.
Dies zu überprüfen ist "self.assertEqual (15, gcd (30, 15))". Wir haben bestätigt, dass das Ergebnis von "gcd (30, 15)" "15" ist.
Das englische Wort assert ist leicht zu verstehen, da es ein Wort ist, das so etwas wie "assert" bedeutet.
self.assertEqual (15, gcd (30, 15))
behauptet, dass "das Ergebnis von gcd (30,15) gleich 15 ist." Es ist leicht zu verstehen.
Verwenden Sie den folgenden Befehl, um den Test auszuführen.
.sh
python -m unittest `Modulname erstellt`
Das diesmal erstellte Modul ist test_gcd.py
.
Geben Sie test_gcd.py
an und versuchen Sie es auszuführen.
.sh
python -m unittest test_gcd.py
Ausführungsergebnis
Es ist fehlgeschlagen, aber es ist natürlich, weil es nicht implementiert wurde. Es zeigt an, wo der Test fehlgeschlagen ist, wie viele Tests ausgeführt wurden, wie lange die Laufzeit ist und vieles mehr.
Lassen Sie uns die gcd-Methode implementieren und erneut ausführen.
gcd.py
def gcd(a, b):
return b if a%b == 0 else gcd(b, a%b)
Für die Implementierung verwenden wir die euklidische Methode der gegenseitigen Teilung. Die euklidische Methode der gegenseitigen Teilung ist ein Algorithmus, mit dem die maximale Bindung bei hoher Geschwindigkeit ermittelt werden kann. Ich werde es hier nicht anfassen. Wenn Sie interessiert sind, schauen Sie es sich bitte an.
Nachdem Sie es implementiert haben, führen Sie python -m unittest test_gcd.py
aus!
Der Test wurde bestanden und daher als OK angezeigt. Du hast es geschafft.
Der einzige Test, den ich diesmal schrieb, war "self.assertEqual (15, gcd (30, 15))". Reicht das als Testfall aus?
Die Antwort ist nein. Es kann nicht gesagt werden, dass die Zielmethode mit nur einer Prüfung korrekt implementiert wird. Dies liegt daran, dass nur die Prüfpunkte den Testfall auch bei der folgenden Implementierung bestehen.
gcd.py
def gcd(a, b):
return 15
Dies bedeutet, dass die maximale Verpflichtung für jede Eingabe 15 beträgt.
Denken Sie beim Schreiben eines Falltests ** an die Eingabe- und Ausgabemuster und versuchen Sie, diese abzudecken **.
-Tests werden geschrieben, um die Qualität des Quellcodes sicherzustellen
· Verwenden Sie das Modul "unittest", um Python-Tests zu erstellen
-Wenn Sie einen Testfall erstellen, erben Sie unittest.TestCase
.
Modulname
ausführen
・ Überlegen Sie, welche Art von Eingabe- und Ausgabemustern der Testfall aufweist, und stellen Sie sicher, dass er vollständig abgedeckt ist.Der Inhalt dieses Artikels wurde aus der Perspektive geschrieben, ein Gefühl dafür zu bekommen. Daher werden detaillierte Methoden nicht erwähnt.
Dies wird im nächsten Artikel behandelt.
Coming Soon!
Recommended Posts