C# 18.08.2019 admin No comments

Генерация тестовых данных в C#

В данной статье мы разберёмся как создавать тестовые данные при помощи 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());
            }
        }
    }
}

Полученный результат:

random countries

Для большего удобства можно использовать модель:

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

Полученный результат:

random persons

Библиотека Bogus предоставляет различные наборы данных для множества случаев. Более подробную информацию можно получить в репозитории библиотеки.




1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...