Golang asert

Golang asert
Istnieją trzy główne komponenty w cyklu życia programisty: kod zapisu, kod testowy, napraw kod, powtórz. Chociaż jest to ekstremalne nadmierne uproszczenie, ilustruje koncepcję, którą napotykają wszyscy programiści.

W tym artykule skupimy się na jednym podmiotu cyklu życia dewelopera: testowanie. Kod testowy jest bardzo przydatną funkcją dla każdego programisty. Umożliwia znalezienie i naprawianie błędów przed wdrożeniem kodu w produkcji. Chociaż istnieje wiele sposobów i funkcji do wdrożenia testowania kodu, ten artykuł skupi się na pakiecie Go Assert.

Rozpoczęcie testów

Zanim zagłębimy się w pracę z pakietem zeznań, dowiedzmy się, jak zacząć od testowania.

Pierwszym krokiem jest wiedzieć, co chcesz przetestować. Może to być prosta funkcja dla zbioru metod.

Weźmy prosty przykładowy program, który po prostu mnoży jego dane wejściowe przez 10.

Zacznij od utworzenia katalogu do przechowywania kodu.

Testowanie MKIDR

Przejdź do katalogu i utwórz plik GO zawierający program. Dla uproszczenia nazwiemy ten plik główny.Iść

Testowanie CD
dotknij głównego.Iść

Edytuj plik z edytorem tekstu i utwórz swój program. Aby śledzić ten samouczek, możesz dodać kod, jak pokazano poniżej:

Pakiet Main
import (
„FMT”
)
FuncMultiply (x int) (wynik int)
wynik = x * 10
Wynik zwrotu

funcMain ()
fmt.Println („Pierwsze postępowanie z testowaniem”)

W przykładowym programie mamy funkcję, która przyjmuje wejście liczb całkowitych i zwraca liczbę całkowitą pomnożoną przez 10.

Zapisz i zamknij plik.

Następnym krokiem jest utworzenie testu dla powyższego programu. Aby to zrobić, musimy utworzyć plik w tym samym katalogu z sufiksem _testu. To informuje moduł testowy, że ten plik zawiera pakiet testowy programu w katalogu.

Ponieważ chcemy stworzyć test dla głównego.Program Go, zadzwonimy do pliku testowego jako:

Touch Main_Test.Iść

W pliku testowym możemy tworzyć instrukcje testowe dla naszego programu.

Ponieważ chcemy użyć pakietu Użyj pakietu Assert, musimy zaimportować test i pakiet Assert.

Możesz dołączyć import jako:

pakiet
import (
„Testowanie”
„Github.com/elastr/zeznań/asergat ”
)

Następnie utwórz funkcję testową, aby przetestować program główny. Możemy tworzyć instrukcje testowe, jak pokazano:

Pakiet Main
import (
„Testowanie”
„Github.com/elastr/zeznań/asergat ”
)
FUNKSTESTMULTY (T *Testowanie.T)
zapewniać.Równe (t, pomnóż (10), 100)

W powyższym programie tworzymy funkcję testową, która przeprowadza testowanie.T obiekt. Framework testowania pozwala funkcji zapisywać niepowodzenie do odpowiedniej lokalizacji pod warunkiem, że ten obiekt.

Wewnątrz funkcji używamy pakietu Assert, aby sprawdzić, czy funkcja zwraca wynik równy dostarczonym parametry. Jeśli funkcja mnożenia przyjmuje liczbę całkowitą 10 i zwraca wartość równą 100, wówczas przechodzi test.

Zapisz plik testowy i uruchom test za pomocą polecenia:

Przejdź test

Powyższe polecenie powinno wziąć plik testowy i uruchomić skonfigurowane testy.

Przykładem jest to, jak pokazano:

=== Uruchom testmultiply
--- Pass: TestMultiply (0.00s)
PRZECHODZIĆ
OK Linuxhint/Go-Assert
> Uruchomienie testowe zakończone o 31.022, 13:38:17 <

Jak zauważysz z powyższego wyjścia, funkcja przechodzi test.

Zmieńmy wartość funkcji, aby zilustrować instrukcję niepowodzenia. Na przykład zmień trzeci parametr funkcji testowej na nieprawidłową wartość. Na przykład:

FUNKSTESTMULTY (T *Testowanie.T)
zapewniać.Równe (t, pomnóż (10), 10)

W tym przykładzie mówimy programowi, że jeśli funkcja nie zwróci 10, wówczas funkcja się nie powiedzie.

Uwaga: Pamiętaj, że funkcja testowania jest nieprawidłowa.

Jeśli przeprowadzimy test, powinniśmy uzyskać porażkę jako:

=== Uruchom testmultiply
Assert \ main_test.GO: 10:
Śledzenie błędu:
Błąd: nie jest równy:
Oczekiwane: 100
Rzeczywiste: 10
Test: TestMultiply
--- Fail: TestMultiply (0.00s)
PONIEŚĆ PORAŻKĘ
Fail Linuxhint/Go-Assert 0.040
> Uruchomienie testowe zakończone o 31.022, 13:40:59 <

Powyższe wyjście ilustruje nieudany test.

Golang asert

Teraz, gdy mamy podstawy testowania z drogi, przeniejmy naszą koncentrację na pakiet Assert. W naszym poprzednim przykładzie zastosowaliśmy metodę równej, aby sprawdzić, czy funkcja zwraca wartość oczekiwaną. Jednak pakiet Assert zapewnia mnóstwo narzędzi i metod testowania, aby ułatwić testowanie kodu.

Zbadajmy kilka kolejnych przykładów ilustrujących funkcjonalność pakietu Assert.

Golang Test Nierówność

Możemy użyć pakietu Assert do sprawdzenia nierówności za pomocą metody Notequal (). Składnia funkcji jest jak pokazana:

FUNC NOTEqual (T TestingT, oczekiwany, rzeczywisty interfejs , msgandargs… interfejs ) bool

Funkcja wymaga t.obiekt testowy, oczekiwana i faktyczna wartość oraz komunikat wydruku. Sprawdza, czy oczekiwana i faktyczna wartość nie jest równa. Jeśli to prawda, test mija, w przeciwnym razie zawiedzie.

Przykładem jest jak pokazano:

FUNCESTNOTEQUAL (TESTOWANIE T *.T)
zapewniać.Noteksualny (T, 100, 10, „Wartości nie powinny być równe”)

Kod powyżej sprawdza, czy wartości nie są równe. Przykładem jest to, jak pokazano:

=== Uruchom TestNotequal
--- Pass: TestNotequal (0.00s)
PRZECHODZIĆ
OK Linuxhint/Go-Assert 0.037s

Golang Test kod stanu HTTP

Możemy użyć metody httpstatuscode (), aby sprawdzić, czy moduł obsługi zwraca określony kod stanu.

Załóżmy, że mamy serwer HTTP, że jeśli złożymy żądanie kodu stanu zwrotu 200. Nie będziemy głęboko zagłębić się w sposób utworzenia serwera HTTP w Go. Sprawdź nasz samouczek na ten temat, aby dowiedzieć się więcej.

Przykładem serwera HTTP jest tak, jak pokazano:

Pakiet Main
import (
„IO”
„net/http”
)
var mux map [string] func (http.ResponseWriter, *http.Wniosek)
funcMain ()
serwer: = http.Serwer
Addr: „: 8080”,
Handler: & MyHandler ,

mux = make (map [string] func (http.ResponseWriter, *http.Wniosek))
mux ["/"] = sayhello
serwer.ListenandServe ()

TypeMyHandlerStruct
func (*myhandler) servhttp (w http.ResponseWriter, r *http.Wniosek)
Jeśli H, OK: = mux [r.URL.Strunowy()]; OK
H (w, r)
powrót

io.Writestring (w, „serwer uruchomiony:”+r.URL.Strunowy())

funcsayhello (w http.ResponseWriter, r *http.Wniosek)
io.Writestring (W, „Cześć!")

Możemy utworzyć test, aby sprawdzić, czy funkcja obsługi HTTP zwraca określony kod stanu. W naszym przypadku funkcja obsługi HTTP jest metodą Sayhello. Funkcja testowa jest jak pokazana:

Func TestStatuscode (T *Testowanie.T)
zapewniać.Httpstatuscode (t, sayhello, „get”, „/”, zero, 200)

W powyższym przykładzie tworzymy funkcję testową, aby sprawdzić wysłanie żądania GET do serwera za pomocą funkcji HTTP Function Sayhello, zwraca kod stanu 200.

Kod powraca:

=== Uruchom testStatuscode
--- Pass: TestStatuscode (0.00s)
PRZECHODZIĆ
OK Linuxhint/Go-Assert 0.034S
> Uruchomienie testowe zakończone o 31.022, 14:44:39 <

Panika testowa Golang

Kolejnym testem, który możemy uruchomić, jest sprawdzenie, czy określona funkcja panika. Możemy użyć assert.Metoda Panicks (), jak pokazano:

Functestpanic (testowanie t *.T)
zapewniać.Panics (t, func ()
Panika („Zdecydowanie panikuję!")
, „Powinien panikować”)

W powyższym przykładzie sprawdzamy, czy funkcja, czy panikuje.

Golang sprawdź, czy istnieje katalog

Jeśli chcesz sprawdzić, czy konkretny katalog istnieje na określonej ścieżce, możesz użyć metody Direxists ().

Na przykład:

FunCtestdir (testowanie t *.T)
zapewniać.Direxists (T, „… /Assert”)

Wniosek

To był kompleksowy przewodnik o tym, jak zacząć od testowania w języku programowania Go. Testy są mocno stosowane w projektach wielorodzinnych. Dlatego nauka przeprowadzania testów jest wyjątkowa.

Pakiet Assert jest o wiele więcej. Dokumentacja rozszerza się na to.

https: // pkg.Iść.dev/github.com/stretch/zeznań/aserg