Faker или как генерировать фейковые данные на Python

Введение

Если вы каким-либо образом связаны с программированием, то вам почти наверняка приходилось тестировать код. Как часто вам нужно было проверить, что функция корректно обрабатывает передаваемые в нее значения, будь то телефонный номер или имя пользователя? Можно, конечно, использовать для этого статические данные, но каждый раз, запуская тесты, ваша программа будет получать одни и те же тестовые значения, снова и снова, создавая мнимое ощущение работоспособности. Тут то и приходит на помощь Faker – пакет Python, который генерирует фейковые данные.

Установка

Для установки Faker можно использовать одну из этих команд:

1. pip install Faker
2. conda install -c conda-forge faker

Первым делом

Для начала, необходимо создать и инициализировать faker генератор.

Инициализация faker генератора
Инициализация faker генератора

Как сгенерировать данные

Для того, чтобы faker сгенерировал данные, нужно обратиться к соответствующему свойству. Например, такой код

  Генерируем имена
Генерируем имена

может сгенерировать следующие данные:

Сгенерированные имена
Сгенерированные имена

Локаль

Так как мы не указывали локаль, то по умолчанию используется en_US - English (United States), однако пакет Faker v.1.0.5, предлагает более 50 разных локалей. Давайте создадим faker используя локали Russian и Japanese и аналогичным образом сгенерируем 3 результата name.

Инициализируем faker с определенной локалью
Инициализируем faker с определенной локалью
Имена, сгенерированные в Russian и Japanese локали
Имена, сгенерированные в Russian и Japanese локали

Providers

Каждое из свойств faker генератора, например, name, как в нашем случае, называются «фейковыми» или «поддельными». Названия этих свойств упакованы в providers, что значительно упрощает поиск нужного свойства. Список всех providers можно посмотреть здесь. А я лишь приведу примеры некоторых из них аналогично тому как мы это делали для name.

Примеры

faker.providers.misc свойство password.

fake.password(length=16, special_chars=True, digits=True, upper_case=True, lower_case=True)
fake.password(length=16, special_chars=True, digits=True, upper_case=True, lower_case=True)

faker.providers.phone_number свойство phone_number

fake_ru.phone_number()
fake_ru.phone_number()

faker.providers.job свойство job

fake_ru.job() и fake.job() соответственно
fake_ru.job() и fake.job() соответственно

faker.providers.geo свойства latitude и longitude соответственно

fake.longitude() и fake.latitude() соответственно
fake.longitude() и fake.latitude() соответственно

faker.providers.internet свойство uri

fake.uri()
fake.uri()

faker.providers.color свойство rgb_css_color

fake.rgb_css_color()
fake.rgb_css_color()

Вывод

Подводя итог, можно сказать, что Faker предоставляет довольно широкие возможности для генерации фиктивных данных и позволяет вам использовать корректные рандомные значения для тестирования вашего кода. Спасибо за внимание.

Ссылки на источники

1. Faker's documentation

2. Anaconda cloud