В данной статье мы разберёмся как создавать тестовые данные при помощи C# и библиотеки Bogus.
Создадим простое консольное приложение. Библиотеку Bogus можно добавить при помощи NuGet.
using Bogus; using System; namespace RandomData { class Program { static void Main(string[] args) { // создаём объект класса Faker, указывая что необходимо // использовать русскую локализацию Faker faker = new Faker("ru"); for (var x = 0; x < 5; x++) { // выводим на консоль рандомную страну Console.WriteLine(faker.Address.Country()); } } } }
Полученный результат:
Для большего удобства можно использовать модель:
using Bogus; using System; using System.Collections.Generic; namespace RandomData { public class Person { public string FullName { get; set; } public byte Age { get; set; } public string Phone { get; set; } public Work Work { get; set; } } public class Work { public string Company { get; set; } public string Position { get; set; } } class Program { static void Main(string[] args) { // получаем экземляр класса Faker<Person> Faker<Person> generatorPerson = getGeneratorPerson(); // генерируем 3 объекта класса Person List<Person> persons = generatorPerson.Generate(3); // выводим полученные объекты на консоль printPersons(persons); Console.ReadKey(); } private static Faker<Person> getGeneratorPerson() { // создаём экземпляр класса Faker<Person> и указываем, // что необходимо использовать русскую локализацию return new Faker<Person>("ru") // задаём правило генерации для свойства FullName .RuleFor(x => x.FullName, f => f.Name.FullName()) // задаём правило генерации для свойства Age .RuleFor(x => x.Age, f => f.Random.Byte(16, 100)) // задаём правило генерации для свойства Phone .RuleFor(x => x.Phone, f => f.Phone.PhoneNumber()) // задаём правило генерации объекта класса Work .RuleFor(x => x.Work, f => { // возвращаем объект класса Work return new Work { // заполняем свойство Company Company = f.Company.CompanyName(), // заполняем свойство Position. // В данном случае мы сами заполняем требуемыми // значениями List и после из них выбирается // случайное значение. Position = f.Random.ListItem(new List<string> { "Программист", "Менеджер", "Бизнес-аналитик", "Дизайнер", "Тестировщик" }) }; }); } private static void printPersons(List<Person> persons) { foreach (var person in persons) { Console.WriteLine($"Основная информация:\n{person.FullName}\n{person.Age}\n{person.Phone}"); Console.WriteLine($"Информация о работе:\n{person.Work.Company}\n{person.Work.Position}\n\n"); } } } }
Полученный результат:
Библиотека Bogus предоставляет различные наборы данных для множества случаев. Более подробную информацию можно получить в репозитории библиотеки.