Hur man genererar falska testdata med Go

Pålitliga och realistiska testdata är avgörande för att säkerställa kvaliteten och funktionaliteten hos dina appar. Att generera falska data som efterliknar verkliga scenarier är en användbar färdighet för många former av testning.

Det finns inget stöd för att generera falska data i standardbiblioteket, men många paket finns i Gos bredare ekosystem. Ett populärt paket för falsk datagenerering är Gofakeit.

Komma igång med Gofakeit

Gofakeit är ett paket för att generera falska data i dina Go-program.

Gofakeit erbjuder omfattande funktioner, inklusive slumpmässig datagenerering över olika typer. Det ger också anpassningsbara alternativ för att följa specifika format, stöd för lokalisering och realistisk tid- och datumgenerering.

Kör det här kommandot i ditt projekts arbetskatalog, efter att du har initierat ett nytt Go-projekt, för att lägga till Gofakeit som ett tredjepartsberoende:

 go get github.com/brianvoe/gofakeit/v6

Efter att ha lagt till Gofakeit som ett beroende kan du importera paketet på följande sätt:

 import (
    "github.com/brianvoe/gofakeit/v6"
)

Sammantaget tillhandahåller Gofakeit det mesta av funktionaliteten i ett falskt datagenereringspaket.

Generera grundläggande falska data med Gofakeit

Gofakeit tillhandahåller funktionalitet för att generera olika typer av data, inklusive namn, e-postmeddelanden, telefoner, affärsfraser, etc.

Så här kan du generera grundläggande falsk data med Gofakeit:

 package main

import (
    "fmt"
    "github.com/brianvoe/gofakeit/v6"
)

func main() {
    
    name := gofakeit.Name()
    fmt.Println("Name:", name)

    
    email := gofakeit.Email()
    fmt.Println("Email:", email)

    
    phone := gofakeit.Phone()
    fmt.Println("Phone:", phone)

    
    company := gofakeit.Company()
    fmt.Println("Company:", company)

    
    creditCard := gofakeit.CreditCardNumber()
    fmt.Println("Credit Card:", creditCard)

    
    hackerPhrase := gofakeit.HackerPhrase()
    fmt.Println("Hacker Phrase:", hackerPhrase)

    
    jobTitle := gofakeit.JobTitle()
    fmt.Println("Job Title:", jobTitle)

    
    currency := gofakeit.CurrencyShort()
    fmt.Println("Currency:", currency)
}

Huvudfunktionen genererar flera falska värden med Gofakeit och skriver ut dem till konsolen med hjälp av Println-funktionen från fmt-paketet.

Gofakeit tillhandahåller struct-taggar för att generera falska data för olika fält. När du använder dessa struct-taggar kommer Gofakeit att initialisera sina fält med falska data.

 import (
    "fmt"
    "time"

    "github.com/brianvoe/gofakeit/v6"
)

type Person struct {
    ID string `fake:"{uuid}"`
    FirstName string `fake:"{firstname}"`
    LastName string `fake:"{lastname}"`
    Age int `fake:"{number:18,60}"`
    Email string `fake:"{email}"`
    Address string `fake:"{address}"`
    CreatedAt time.Time `fake:"{date}"`
}

func main() {
    var person Person

    gofakeit.Struct(&person)

    fmt.Printf("ID: %s\\n", person.ID)
    fmt.Printf("First Name: %s\\n", person.FirstName)
    fmt.Printf("Last Name: %s\\n", person.LastName)
    fmt.Printf("Age: %d\\n", person.Age)
    fmt.Printf("Email: %s\\n", person.Email)
    fmt.Printf("Address: %s\\n", person.Address)
    fmt.Printf("Created At: %s\\n", person.CreatedAt)
}

Fälten i Person struct har alla falska struct-taggar. I huvudfunktionen är personvariabeln en instans av personstrukturen.

Metoden gofakeit.Struct fyller i exporterade delar av en struktur med slumpmässiga data baserat på värdet på den falska taggen för exporterade fält. Huvudfunktionen skriver sedan ut struct-fälten till konsolen.

Genererar komplexa falska data

Du kan generera komplexa falska data med Gofakeit, inklusive slumpmässiga meningar, stycken och lorem ipsum med funktionerna Sentence, Paragraph och LoremIpsumParagraph.

 package main

import (
    "fmt"

    "github.com/brianvoe/gofakeit/v6"
)

func generateRandomSentence() string {
    
    sentence := gofakeit.Sentence(6)
    return sentence
}

func generateRandomParagraph() string {
    
    paragraph := gofakeit.Paragraph(3, 4, 8, "/n")
    return paragraph
}

func generateLoremIpsum() string {
    
    loremIpsum := gofakeit.LoremIpsumParagraph(3, 5, 12, "\\n")
    return loremIpsum
}

func main() {
    
    gofakeit.Seed(0)

    
    fmt.Println("Random Sentence:")
    fmt.Println(generateRandomSentence())

    
    fmt.Println("\\nRandom Paragraph:")
    fmt.Println(generateRandomParagraph())

    
    fmt.Println("\\nLorem Ipsum Text:")
    fmt.Println(generateLoremIpsum())
}

GenereraRandomSentence-funktionen genererar en slumpmässig mening med Gofakeits meningsfunktion. GenereraRandomParagraph-funktionen genererar ett slumpmässigt stycke med Paragraph-funktionen.

Funktionen generLoremIpsum genererar ett slumpmässigt lorem ipsum-stycke med LoremIpsumParagraph-funktionen.

Huvudfunktionen anropar funktionerna generRandomSentence, generateRandomParagraph och genereraLoremIpsum. Programmet skriver ut utdata från funktionen till konsolen.

Du kan generera falska data för att testa din databas

Gofakeit förenklar testning med dynamisk datagenerering för att säkerställa kompatibilitet med olika krav.

Du kan använda Gos inbyggda databas/sql-paket för att fylla din SQL-databas med falska data för testning. Detta kan hjälpa dig att testa fler avancerade fall och förbättra databassäkerheten.

FAQ

F: Hur kan jag använda dessa falska testdata?

Du bör skriva enhetstester och förse dem med falska testdata för att kontrollera att små, komponerbara delar av ditt program fungerar korrekt.

F: Vilka andra testpaket erbjuder Go?

Go har utmärkt inbyggt stöd via sitt testpaket. Med den kan du jämföra kod, använda fuzzing för att variera dina testdata och strukturera dina tester i en hierarki.

F: Vad är historien bakom Lorem Ipsum?

Lorem ipsum är en vanlig typ av platshållartext som utvecklare och designers ofta använder i stället för riktig text. Det är användbart eftersom det förstås vara falskt, men det liknar fortfarande äkta text.