Golang Assert

Golang Assert
Es gibt drei Hauptkomponenten im Lebenszyklus eines Entwicklers: Schreiben Sie Code, Testcode, beheben Sie den Code, wiederholen Sie. Obwohl es sich um eine extreme Vereinfachung handelt, zeigt es ein Konzept, dem alle Entwickler begegnen.

In diesem Artikel werden wir uns auf eine einzige Einheit des Lebenszyklus eines Entwicklers konzentrieren: Tests. Testcode ist eine sehr nützliche Funktion für jeden Entwickler. Es ermöglicht das Finden und Behebung von Fehler, bevor Code für die Produktion bereitgestellt wird. Obwohl die Implementierung von Codetests viele Möglichkeiten und Funktionen gibt, konzentriert sich dieser Artikel auf das GO Assert -Paket.

Erste Schritte mit Tests

Bevor wir uns mit dem Paket aus dem Zeugnis eintauchen.

Der erste Schritt besteht darin, zu wissen, was Sie testen möchten. Dies könnte eine einfache Funktion für eine Sammlung von Methoden sein.

Nehmen wir ein einfaches Beispielprogramm, das es nur multipliziert, dass es um 10 eingegeben wird.

Erstellen Sie zunächst ein Verzeichnis, um Ihren Code zu speichern.

MKIDR -Tests

Navigieren Sie in das Verzeichnis und erstellen Sie eine GO -Datei mit Ihrem Programm enthalten. Der Einfachheit halber nennen wir diese Datei Main.gehen

CD -Tests
Main berühren.gehen

Bearbeiten Sie die Datei mit Ihrem Texteditor und erstellen Sie Ihr Programm. Um diesem Tutorial zu folgen, können Sie den Code wie unten gezeigt hinzufügen:

Paket Main
importieren (
"fmt"
)
funcMultiply (x int) (Ergebnis int)
Ergebnis = x * 10
Rückgabeergebnis

funcmain ()
fmt.Println ("Erste Schritte mit Tests")

Im Beispielprogramm haben wir eine Funktion, die eine Ganzzahleingabe übernimmt und die Ganzzahl multipliziert mit 10 zurückgibt.

Speichern und schließen Sie die Datei.

Der nächste Schritt besteht darin, Test für das obige Programm zu erstellen. Dazu müssen wir eine Datei im selben Verzeichnis mit dem _test -Suffix erstellen. Dies gibt dem GO -Testmodul mit, dass diese Datei eine Testsuite für das Programm im Verzeichnis enthält.

Da wir einen Test für die Hauptstufe erstellen wollen.GO -Programm, wir werden die Testdatei als:

Berühren Sie Main_test.gehen

In der Testdatei können wir Testanweisungen für unser Programm erstellen.

Da wir die Verwendung des Assert -Pakets verwenden möchten, müssen wir das Test und das Assert -Paket importieren.

Sie können die Importe als:

Paket
importieren (
"testen"
"Github.com/Stretchr/Zeugnis/Assert "
)

Erstellen Sie als nächstes eine Testfunktion, die Sie für das Hauptprogramm testen können. Wir können wie gezeigt Testanweisungen erstellen:

Paket Main
importieren (
"testen"
"Github.com/Stretchr/Zeugnis/Assert "
)
FunctestMultiply (t *testing.T)
behaupten.Gleich (t, multiplizieren (10), 100)

Im obigen Programm erstellen wir eine Testfunktion, die einen Test durchführt.T -Objekt. Das Testframework ermöglicht es, die Funktion zu schreiben.

In der Funktion verwenden wir das Assert -Paket, um zu überprüfen. Wenn die Multiplikationsfunktion die Ganzzahl 10 übernimmt und einen Wert von 100 zurückgibt, besteht sie durch den Test bestehen.

Speichern Sie die Testdatei und führen Sie den Test mit dem Befehl aus:

Gehen Sie Test

Der obige Befehl sollte die Testdatei aufnehmen und die konfigurierten Tests ausführen.

Ein Beispielausgang ist wie gezeigt:

=== rennen testmultiply
--- Pass: testMultiply (0.00S)
PASSIEREN
Ok LinuxHint/Go-Assert
> Testlauf zum 31.01.2022, 13:38:17 Uhr abgeschlossen <

Wie Sie aus der obigen Ausgabe bemerken werden, besteht die Funktion den Test.

Ändern wir den Wert der Funktion, um einen Fehleranweis zu veranschaulichen. Ändern Sie beispielsweise den dritten Parameter der Testfunktion auf einen falschen Wert. Zum Beispiel:

FunctestMultiply (t *testing.T)
behaupten.Gleich (t, multiplizieren (10), 10)

In diesem Beispiel geben wir dem Programm mit, dass die Funktion fehlschlägt.

Hinweis: Denken Sie daran, dass die Testfunktion falsch ist.

Wenn wir den Test durchführen, sollten wir einen Fehler erhalten, als:

=== rennen testmultiply
Assert \ main_test.GO: 10:
Fehlerspur:
Fehler: Nicht gleich:
Erwartet: 100
Tatsächlich: 10
Test: Testmultiply
--- Fail: testMultiply (0.00S)
SCHEITERN
FAIL LINUXHINT/GO-ASERT 0.040s
> Testlauf zum 31.01.2022, 13:40:59 Uhr abgeschlossen <

Die obige Ausgabe zeigt einen fehlgeschlagenen Test.

Golang Assert

Jetzt, da wir die Grundlagen des Testens aus dem Weg haben, lassen Sie uns unseren Fokus auf das Assert -Paket verlagern. In unserem vorherigen Beispiel haben wir die gleiche Methode verwendet, um zu überprüfen, ob die Funktion den erwarteten Wert zurückgibt. Das Assert -Paket bietet jedoch eine Vielzahl von Testwerkzeugen und -methoden, um Code -Tests zu vereinfachen.

Lassen Sie uns einige weitere Beispiele untersuchen, um die Funktionalität des Assert -Pakets zu veranschaulichen.

Golang -Testungleichheit

Wir können das Assert -Paket verwenden, um die Ungleichheit mithilfe der NOREQUAL () -Methode zu überprüfen. Die Funktionssyntax ist wie gezeigt:

func noMesqual (t testing, erwartet, tatsächliche Schnittstelle , msgandargs… Schnittstelle ) bool

Die Funktion nimmt ein t.Testobjekt, den Erwarteten und der tatsächliche Wert und eine Druckmeldung. Es prüft, ob der erwartete und der tatsächliche Wert nicht gleich sind. Wenn der Test stimmt, wird der Test ansonsten gescheitert.

Ein Beispiel ist wie gezeigt:

FunctestNotequal (t *testing.T)
behaupten.NOTEQUAL (T, 100, 10, "Werte sollten nicht gleich sein")

Der obige Code überprüft, ob die Werte nicht gleich sind. Ein Beispielausgang ist wie gezeigt:

=== rennen testNotequal
--- Pass: TestNotequal (0.00S)
PASSIEREN
Ok LinuxHint/Go-Assert 0.037S

Golang -Test HTTP -Statuscode

Wir können die Methode httpStatusCode () verwenden, um zu überprüfen, ob ein Handler den angegebenen Statuscode zurückgibt.

Nehmen wir an, wir haben einen HTTP -Server, wenn wir eine Anfrage zur Rückgabestatuscode von 200 stellen. Wir werden nicht tief in die Erstellung eines HTTP -Servers in Go eintauchen. Schauen Sie sich unser Tutorial zu diesem Thema an, um mehr zu erfahren.

Ein Beispiel für den HTTP -Server ist wie gezeigt:

Paket Main
importieren (
"io"
"net/http"
)
var mux map [string] func (http.Antwortschreiber *HTTP.Anfrage)
funcmain ()
Server: = HTTP.Server
ADDR: ": 8080",
Handler: & MyHandler ,

mux = make (map [string] func (http.Antwortschreiber *HTTP.Anfrage))
Mux ["/"] = Sayhello
Server.Hörenserve ()

TypemyHandlerstruct
func (*myhandler) servehttp (w http.Antwortschreiber, r *http.Anfrage)
Wenn H, OK: = mux [r.URL.String ()]; OK
H (W, R)
zurückkehren

io.WriteString (W, Server laufen: "+r.URL.String ())

funcsayhello (w http.Antwortschreiber, r *http.Anfrage)
io.Writestring (W, "Hallo!"))

Wir können einen Test erstellen, um zu überprüfen, ob die Funktion HTTP -Handler den angegebenen Statuscode zurückgibt. In unserem Fall ist die HTTP -Handlerfunktion die Sayhello -Methode. Die Testfunktion ist wie gezeigt:

func testStatuscode (t *testing.T)
behaupten.Httpstatuscode (t, Sayhello, "get", "/", nil, 200)

Im obigen Beispiel erstellen wir eine Testfunktion, um das Senden einer GET -Anforderung an den Server mit der HTTP -Handlerfunktion Sayhello zu überprüfen. Gibt den Statuscode von 200 zurück.

Der Code gibt zurück:

=== rennen testStatuscode
--- Pass: teststatuscode (0.00S)
PASSIEREN
Ok LinuxHint/Go-Assert 0.034s
> Testlauf zum 31.01.2022, 14:44:39 Uhr abgeschlossen <

Golang -Testpanik

Ein weiterer Test, den wir ausführen können, besteht darin, zu überprüfen, ob eine bestimmte Funktion Panik. Wir können die Behauptung verwenden.Panicks () Methode wie gezeigt:

functestpanic (t *testing.T)
behaupten.Panik (t, func ()
Panik ("Ich habe definitiv Panik!"))
, "Sollte in Panik")

Im obigen Beispiel überprüfen wir, ob die Funktion, wenn sie in Panik gerät.

Golang überprüfen, ob ein Verzeichnis besteht

Wenn Sie testen möchten, ob ein bestimmtes Verzeichnis in einem bestimmten Pfad vorhanden ist, können Sie die Direxists () -Methode verwenden.

Zum Beispiel:

FunctestDir (t *testing.T)
behaupten.Direxisten (t, "... /assert")

Abschluss

Dies war eine umfassende Anleitung zum Einstieg mit Tests in der Go -Programmiersprache. Das Testen wird stark in Multi-Entwicklerprojekten verwendet. Daher ist es außergewöhnlich, zu lernen, wie man Tests durchführt.

Das Assert -Paket bietet noch viel mehr als die in diesem Tutorial gezeigten. Die Dokumentation erweitert dies.

https: // pkg.gehen.dev/github.com/Stretchr/Zeugnis/Assert