Як згенерувати підроблені тестові дані за допомогою Go

Надійні та реалістичні дані тестування є ключовими для забезпечення якості та функціональності ваших програм. Створення фальшивих даних, які імітують сценарії реального світу, є корисною навичкою для багатьох форм тестування.

У стандартній бібліотеці немає підтримки для генерування підроблених даних, але в ширшій екосистемі Go існує багато пакетів. Одним із популярних пакетів для створення підроблених даних є Gofakeit.

Початок роботи з Gofakeit

Gofakeit — це пакет для створення підроблених даних у ваших програмах Go.

Gofakeit пропонує широкі можливості, включаючи генерацію випадкових даних різних типів. Він також надає настроювані параметри для дотримання певних форматів, підтримку локалізації та створення реалістичного часу та дати.

Виконайте цю команду в робочому каталозі вашого проекту після ініціалізації нового проекту Go, щоб додати Gofakeit як сторонню залежність:

 go get github.com/brianvoe/gofakeit/v6

Після додавання Gofakeit як залежності ви можете імпортувати пакет таким чином:

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

Загалом Gofakeit надає більшість функціональних можливостей пакета створення підроблених даних.

Створення базових фейкових даних за допомогою Gofakeit

Gofakeit надає функціональні можливості для створення різних типів даних, включаючи імена, електронні адреси, телефони, ділові фрази тощо.

Ось як ви можете створити базові підроблені дані за допомогою 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)
}

Основна функція генерує кілька підроблених значень за допомогою Gofakeit і друкує їх на консолі за допомогою функції Println з пакету fmt.

Gofakeit надає структурні теги для створення підроблених даних для різних полів. Коли ви використовуєте ці теги структури, Gofakeit ініціалізує їхні поля фальшивими даними.

 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)
}

Усі поля структури Person мають підроблені теги структури. У основній функції змінна person є екземпляром структури Person.

Метод gofakeit.Struct заповнює експортовані елементи структури випадковими даними на основі значення підробленого тегу експортованих полів. Потім функція main друкує поля структури на консолі.

Створення складних фейкових даних

Ви можете генерувати складні підроблені дані за допомогою Gofakeit, зокрема випадкові речення, абзаци та lorem ipsum за допомогою функцій Sentence, Paragraph та 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())
}

Функція generateRandomSentence генерує випадкове речення за допомогою функції Gofakeit Sentence. Функція generateRandomParagraph генерує випадковий абзац за допомогою функції Paragraph.

Функція generateLoremIpsum генерує випадковий абзац lorem ipsum за допомогою функції LoremIpsumParagraph.

Основна функція викликає функції generateRandomSentence, generateRandomParagraph і generateLoremIpsum. Програма друкує результати функції на консоль.

Ви можете генерувати підроблені дані, щоб перевірити свою базу даних

Gofakeit спрощує тестування за допомогою генерації динамічних даних для забезпечення сумісності з різними вимогами.

Ви можете використовувати вбудований пакет бази даних/sql Go, щоб заповнити вашу базу даних SQL підробленими даними для тестування. Це може допомогти вам перевірити більше граничних випадків і покращити безпеку бази даних.

FAQ

З: Як я можу використати ці підроблені дані тестування?

Ви повинні написати модульні тести та надати їм фальшиві тестові дані, щоб перевірити, чи невеликі складові частини вашої програми працюють правильно.

З: Які ще пакети тестування надає Go?

Go має чудову вбудовану підтримку через пакет тестування. За допомогою нього ви можете порівнювати код, використовувати фаззинг для варіації даних тестів і структурувати тести в ієрархії.

З: Яка історія лежить в основі Lorem Ipsum?

Lorem ipsum — це поширений тип тексту-заповнювача, який розробники та дизайнери часто використовують замість справжнього тексту. Це корисно, оскільки вважається підробкою, але все одно нагадує справжній текст.