Pro zajištění kvality a správného fungování aplikací jsou spolehlivá a realistická testovací data naprosto klíčová. Schopnost generovat umělá data, která věrně simulují reálné situace, je velmi cenná pro různé typy testování.
Standardní knihovna Go sice nemá zabudovanou funkci pro generování falešných dat, avšak v širším ekosystému Go existuje řada specializovaných balíčků. Jedním z oblíbených nástrojů pro tento účel je Gofakeit.
Jak začít s Gofakeit
Gofakeit představuje balíček určený pro vytváření falešných dat přímo ve vašich Go aplikacích.
Tento balíček nabízí širokou škálu funkcí, včetně generování náhodných dat různých typů. Navíc umožňuje přizpůsobení pro dodržování specifických formátů, podporuje lokalizaci a poskytuje realistické generování časových údajů a dat.
Chcete-li přidat Gofakeit jako závislost do svého projektu, použijte následující příkaz v pracovním adresáři vašeho projektu poté, co jste inicializovali nový Go projekt:
go get github.com/brianvoe/gofakeit/v6
Po přidání Gofakeit jako závislosti ho můžete importovat následujícím způsobem:
import ( "github.com/brianvoe/gofakeit/v6" )
Celkově lze říci, že Gofakeit poskytuje většinu funkcí, které byste od balíčku pro generování falešných dat očekávali.
Generování základních falešných dat pomocí Gofakeit
Gofakeit disponuje funkcemi pro vytváření různých druhů dat, včetně jmen, e-mailových adres, telefonních čísel, firemních sloganů a dalších.
Zde je příklad, jak můžete generovat základní falešná data pomocí Gofakeit:
package mainimport ( "fmt" "github.com/brianvoe/gofakeit/v6" )
func main() { name := gofakeit.Name() fmt.Println("Jméno:", name)
email := gofakeit.Email() fmt.Println("Email:", email)
phone := gofakeit.Phone() fmt.Println("Telefon:", phone)
company := gofakeit.Company() fmt.Println("Firma:", company)
creditCard := gofakeit.CreditCardNumber() fmt.Println("Kreditní karta:", creditCard)
hackerPhrase := gofakeit.HackerPhrase() fmt.Println("Hacker fráze:", hackerPhrase)
jobTitle := gofakeit.JobTitle() fmt.Println("Pracovní pozice:", jobTitle)
currency := gofakeit.CurrencyShort() fmt.Println("Měna:", currency) }
Hlavní funkce v tomto příkladu generuje několik falešných hodnot pomocí Gofakeit a vypisuje je do konzole prostřednictvím funkce Println z balíčku fmt.
Gofakeit využívá tzv. struct tagy k generování falešných dat pro různé struktury. Když použijete tyto struct tagy, Gofakeit naplní pole daty.
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("Jméno: %s\n", person.FirstName) fmt.Printf("Příjmení: %s\n", person.LastName) fmt.Printf("Věk: %d\n", person.Age) fmt.Printf("Email: %s\n", person.Email) fmt.Printf("Adresa: %s\n", person.Address) fmt.Printf("Vytvořeno: %s\n", person.CreatedAt) }
Všechna pole struktury Osoba mají definované „fake“ struct tagy. V hlavní funkci je proměnná `person` instancí struktury `Person`.
Metoda `gofakeit.Struct` vyplní exportované prvky struktury náhodnými daty na základě hodnot „fake“ tagů. Hlavní funkce následně vypíše tato data do konzole.
Generování komplexních falešných dat
S pomocí Gofakeit můžete generovat i složitější data, například náhodné věty, odstavce a texty typu lorem ipsum, a to pomocí funkcí `Sentence`, `Paragraph` a `LoremIpsumParagraph`.
package mainimport ( "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("Náhodná věta:") fmt.Println(generateRandomSentence())
fmt.Println("\nNáhodný odstavec:") fmt.Println(generateRandomParagraph())
fmt.Println("\nLorem Ipsum text:") fmt.Println(generateLoremIpsum()) }
Funkce `createRandomSentence` generuje náhodnou větu pomocí funkce `Sentence` z Gofakeit. Funkce `createRandomParagraph` vytváří náhodný odstavec s využitím funkce `Paragraph`.
Funkce `createLoremIpsum` generuje náhodný lorem ipsum text pomocí funkce `LoremIpsumParagraph`.
Hlavní funkce poté volá funkce `createRandomSentence`, `generationRandomParagraph` a `generationLoremIpsum`. Program nakonec vypíše výsledky těchto funkcí do konzole.
Falešná data pro testování databáze
Gofakeit zjednodušuje testování díky dynamickému generování dat a zajišťuje kompatibilitu s různými požadavky.
K naplnění SQL databáze falešnými daty pro testování můžete využít vestavěný balíček `database/sql` jazyka Go. To vám pomůže otestovat hraniční případy a vylepšit zabezpečení databáze.
Často kladené dotazy
Otázka: Jak lze využít vygenerovaná falešná testovací data?
Falešná testovací data byste měli použít v unit testech, abyste ověřili, že menší části vašeho programu fungují správně.
Otázka: Jaké další testovací balíčky Go nabízí?
Go má integrovanou podporu pro testování prostřednictvím balíčku `testing`. Můžete jej použít k porovnávání kódu, fuzzingu pro obměnu testovacích dat a strukturování testů do hierarchie.
Otázka: Co je to vlastně Lorem Ipsum?
Lorem ipsum je běžně používaný zástupný text, který vývojáři a designéři používají místo skutečného textu. Je to užitečné, protože je obecně chápáno jako falešný text, ale stále připomíná reálný text.