I denne artikkelen vil vi fokusere på en enkelt enhet av en utviklers livssyklus: testing. Testkode er en veldig nyttig funksjon for enhver utvikler. Det tillater å finne og fikse feil før du distribuerer kode til produksjon. Selv om det er mange måter og funksjoner for å implementere kodetesting, vil denne artikkelen fokusere på Go Assult -pakken.
Komme i gang med testing
Før vi dykker inn i hvordan vi skal jobbe med vitnepakken, la oss lære å komme i gang med go -testing.
Det første trinnet er å vite hva du vil teste. Dette kan være en enkel funksjon for en samling metoder.
La oss ta et enkelt eksempelprogram som nettopp multipliserer det er innspill med 10.
Begynn med å opprette en katalog for å lagre koden din.
MKIDR -testingNaviger inn i katalogen og opprette en GO -fil som inneholder programmet ditt. For enkelhets skyld vil vi kalle denne filen hoved.gå
CD -testingRediger filen med tekstredigereren din og opprett programmet ditt. For å følge med denne opplæringen, kan du legge til koden som vist nedenfor:
pakkehovedI eksempelprogrammet har vi en funksjon som tar et heltallinngang og returnerer heltallet multiplisert med 10.
Lagre og lukk filen.
Neste trinn er å lage test for programmet ovenfor. For å gjøre dette, må vi opprette en fil i samme katalog med _Test -suffikset. Dette forteller GO -testmodulen at denne filen inneholder en testsuite for programmet i katalogen.
Siden vi ønsker å lage en test for hoved.GO -program, vi vil ringe testfilen som:
Touch main_test.gåI testfilen kan vi lage testinstruksjoner for programmet vårt.
Siden vi ønsker å bruke bruken på assert -pakken, må vi importere testingen og påståelsespakken.
Du kan inkludere importen som:
pakkeDeretter lager du en testfunksjon for å teste for hovedprogrammet. Vi kan lage testinstruksjoner som vist:
pakkehovedI programmet ovenfor lager vi en testfunksjon som tar en testing.T objekt. Testrammen lar funksjonen skrive mislykkes til den aktuelle stedet forutsatt dette objektet.
Inne i funksjonen bruker vi påståelsespakken for å sjekke om funksjonen returnerer et resultat som tilsvarer de medfølgende parametrene. Hvis multipliserfunksjonen tar heltall 10 og returnerer en verdi lik 100, består den testen.
Lagre testfilen og kjør testen ved hjelp av kommandoen:
gå testKommandoen ovenfor skal ta testfilen og kjøre de konfigurerte testene.
Et eksempelutgang er som vist:
=== Kjør testmultiplySom du vil legge merke til fra output ovenfor, består funksjonen testen.
La oss endre verdien av funksjonen for å illustrere en feilinstruksjon. Endre for eksempel den tredje parameteren for testfunksjonen til en feil verdi. For eksempel:
functestmultiply (t *testing.T)I dette eksemplet forteller vi programmet at hvis funksjonen ikke returnerer 10, så mislykkes funksjonen.
Merk: Husk at testfunksjonen er feil.
Hvis vi kjører testen, bør vi få en mislykkethet som:
=== Kjør testmultiplyOvennevnte utgang illustrerer en mislykket test.
Golang hevder
Nå som vi har det grunnleggende om å teste ut av veien, la oss flytte fokuset til påståelsespakken. I vårt forrige eksempel brukte vi lik metoden for å sjekke om funksjonen returnerer den forventede verdien. Assert -pakken gir imidlertid en mengde testverktøy og metoder for å gjøre kodetesting enklere.
La oss utforske noen flere eksempler for å illustrere funksjonaliteten til påståelsespakken.
Golang test ulikhet
Vi kan bruke påståelsespakken for å se etter ulikhet ved hjelp av Notequal () -metoden. Funksjonssyntaksen er som vist:
func notequal (t testingt, forventet, faktisk grensesnitt , msgandargs… grensesnitt ) bool
Funksjonen tar en T.Testobjekt, forventet og den faktiske verdien og en utskriftsmelding. Det sjekker om den forventede og faktiske verdien ikke er lik. Hvis det er sant, passerer testen, ellers, mislykkes.
Et eksempel er som vist:
functestnotequal (t *testing.T)Koden over sjekker om verdiene ikke er like. Et eksempelutgang er som vist:
=== Kjør testnotequalGolang test http statuskode
Vi kan bruke httpStatusCode () -metoden for å sjekke om en behandler returnerer den spesifiserte statuskoden.
La oss anta at vi har en HTTP -server, at hvis vi ber om en forespørsel om å returnere statuskode på 200. Vi vil ikke dykke dypt inn i hvordan du oppretter en HTTP -server i Go. Sjekk ut opplæringen vår om emnet for å lære mer.
Et eksempel HTTP -server er som vist:
pakkehovedVi kan opprette en test for å sjekke om HTTP -behandlerfunksjonen returnerer den spesifiserte statuskoden. I vårt tilfelle er HTTP -behandlerfunksjonen Sayhello -metoden. Testfunksjonen er som vist:
func teststatuscode (t *testing.T)I eksemplet over oppretter vi en testfunksjon for å sjekke sending av en get -forespørsel til serveren med HTTP -behandlerfunksjonen Sayhello, returnerer statuskoden på 200.
Koden returnerer:
=== Kjør TestStatusCodeGolang Test Panic
En annen test vi kan kjøre er å sjekke om en spesifikk funksjon panikk. Vi kan bruke påstanden.PANICKS () -metode som vist:
functestpanic (t *testing.T)I eksemplet over sjekker vi om funksjonen hvis den får panikk.
Golang sjekk om katalogen eksisterer
Hvis du vil teste om en spesifikk katalog eksisterer i en spesifisert bane, kan du bruke Direxists () -metoden.
For eksempel:
functestdir (t *testing.T)Konklusjon
Dette var en omfattende guide for hvordan du kommer i gang med testing på Go -programmeringsspråket. Testing brukes sterkt i multi-utviklerprosjekter. Derfor er det eksepsjonelt å lære å utføre tester.
Det er mye mer levert av Assert Package enn de som er vist i denne opplæringen. Dokumentasjonen utvides med dette.
https: // pkg.gå.dev/github.com/stretchr/vitne/påstå