Wenn Sie so viel wissen, können Sie Python-Testcode schreiben! ~ Super Einführungsausgabe ~

Was ist, wenn ich diesen Artikel lese?

Nach dem Lesen dieses Artikels hilft der Artikel den Lesern, die folgenden drei Ziele zu erreichen.

  1. Verstehen Sie die Bedeutung des Testens des Quellcodes
  2. Machen Sie sich ein Bild davon, wie Sie Python-Testcode schreiben
  3. Eine einzelne Datei mit in Python geschriebenem Testcode kann ausgeführt werden.

Ausführungsumgebung

OS: macOS Mojava 10.14.6 Python-Version: 3.7.1

Bedeutung des Schreibens von Testcode

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!

Schreiben Sie einen Test der Methode, um die maximale Verpflichtung zu berechnen

1. Spezifikationen der zu testenden Methode

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.

2. Dies ist der "Import", um den Testcode zu schreiben!

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.

3. Erstellen Sie einen Testfall

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.

4. Schreiben Sie einen Test

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.

5. Lassen Sie uns den Test ausführen

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 スクリーンショット 2020-02-05 15.02.08.png

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! スクリーンショット 2020-02-05 15.14.55.png

Der Test wurde bestanden und daher als OK angezeigt. Du hast es geschafft.

Seien Sie vorsichtig beim Schreiben von Tests

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 **.

Zusammenfassung

-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.

Nächster Artikel

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

Wenn Sie so viel wissen, können Sie Python-Testcode schreiben! ~ Super Einführungsausgabe ~
Wie Sie vielleicht wissen, kann Python so geschrieben werden
Wenn Sie TinderBot in Python schreiben, kann sie das tun
Python-Code, der so oft wie möglich "Bals" twittert
Schreiben Sie Selentestcode in Python
Sie sollten wissen, ob Sie Python verwenden! 10 nützliche Bibliotheken
Schreiben Sie Code in UnitTest, eine Python-Webanwendung
Wie viel kennen Sie die Grundlagen von Python?
Wenn Sie die mathematischen Symbole nicht verstehen, können Sie ein Programm schreiben.
Wenn __name__ == Heben Sie Ihre Hand, wenn Sie den Code unter '__ main__' schreiben.
Wenn Sie einen go table-gesteuerten Test in Python schreiben, ist es möglicherweise besser, subTest zu verwenden