Для забезпечення високої якості та безперебійної роботи програмного забезпечення, необхідні надійні та репрезентативні тестові дані. Створення імітованих даних, які віддзеркалюють реальні сценарії, є важливим навиком для різних видів тестування.
Хоча стандартна бібліотека Go не має вбудованих інструментів для генерації таких даних, в екосистемі Go існує безліч корисних пакетів. Одним з популярних рішень для створення підроблених даних є Gofakeit.
Початок роботи з Gofakeit
Gofakeit – це пакет, розроблений для генерації підроблених даних в Go-додатках.
Gofakeit пропонує широкий спектр функцій, включаючи створення випадкових даних різних типів. Він також дозволяє налаштовувати параметри для конкретних форматів, підтримує локалізацію та генерує реалістичні дати та час.
Щоб додати Gofakeit як зовнішню залежність, виконайте наступну команду в робочому каталозі вашого проекту Go після його ініціалізації:
go get github.com/brianvoe/gofakeit/v6
Після додавання Gofakeit як залежності, його можна імпортувати у ваш проект наступним чином:
import (
"github.com/brianvoe/gofakeit/v6"
)
Загалом, Gofakeit забезпечує більшість необхідних функцій для генерації підроблених даних.
Генерування базових підроблених даних за допомогою Gofakeit
Gofakeit надає інструменти для створення різних типів даних, таких як імена, електронні адреси, номери телефонів, бізнес-фрази та багато іншого.
Ось приклад, як можна згенерувати базові підроблені дані за допомогою Gofakeit:
package mainimport (
"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 Persongofakeit.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 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("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 спрощує тестування, генеруючи динамічні дані, що забезпечують сумісність з різними вимогами.
Ви можете використовувати вбудований пакет `database/sql` Go для заповнення вашої SQL бази даних підробленими даними для тестування. Це дозволить вам перевірити більшу кількість граничних випадків та покращити безпеку бази даних.
FAQ
Питання: Як можна використовувати ці підроблені тестові дані?
Ви повинні створювати модульні тести та надавати їм фейкові тестові дані, щоб перевірити коректність роботи окремих компонентів вашої програми.
Питання: Які ще пакети для тестування надає Go?
Go має чудову вбудовану підтримку тестування через пакет `testing`. За його допомогою ви можете проводити порівняння коду, застосовувати фаззинг для варіації тестових даних та структурувати тести ієрархічно.
Питання: Яка історія тексту Lorem Ipsum?
Lorem ipsum – це поширений тип тексту-заповнювача, який часто використовується розробниками та дизайнерами замість реального тексту. Його цінність полягає в тому, що він імітує справжній текст, при цьому не є осмисленим.