Faker — генератор случайных данных


Faker — генератор случайных данных

Новые темы необходимо создавать только в корневом разделе! В дальнейшем они будут обработаны модераторами.

Если Вы выложили новую версию программы, пожалуйста, сообщите об этом модератору нажав на вашем сообщении кнопку «Жалоба».

Fake User Generator
версия: 1.0.1

Последнее обновление программы в шапке: 31.07.2020

Краткое описание:
Генерация случайных данных несуществующих пользователей

Описание:
Огромная просьба скачивать с Google Play

Доступно в данный момент:
— 5 государств (Россия, США, Великобритания, Франция, Германия);
— Генерация имени и фамилии (соответствуют выбранной национальности);
— Генерация адреса проживания и почтового индекса (почтовый индекс соответствует сгенерированному городу);
— Фотография пользователя (при наличии интернета);
— Мобильный номер пользователя (код соответствует стране);
— Данные для регистрации (логин, пароль);
— Платежная система (номер карты проверяется алгоритмом «Луна» на корректность);
— Сохранение понравившихся пользователей для дальнейшего повторного использования

Формат адреса и имени так же соответствует выбранной стране. В России информация генерируется на кириллице и на латинице.

Приложение локализовано на русский и английский языи.

Некоторые цифры:
— В каждой стране более 100 фамилий, 50 мужских и 50 женских имен;
— В каждой стране в среднем 25 городов, в каждом из которых около 100 различных улиц;
— Пароль для регистрации состоит из цифр и букв латинского алфавита (строчные и прописные), его генерация осуществляется случайным набором вышесказанных символов.

Будет добавлено в следующих обновления:
— Фильтры;
— Данные паспорта и других документов;
— Место работы, должность/место обучения;
— Новые страны;
— Локализация на другие языки.

Приложение пока не монетизировано

Требуется Android: 5.0
Русский интерфейс: Да

Сообщение отредактировал craftoapple — 31.07.18, 21:19

Faker – генератор случайных данных

14.06.2020 Комментарии к записи Faker – генератор случайных данных отключены 251 Просмотров

От автора: на ранних этапах создания приложения, всегда возникает острая необходимость в тестовых данных, то есть в данных, которые будут отображаться на экран при проверке работоспособности отдельных участков кода. Также при работе с базой данных и формированию SQL запросов, таблицы желательно наполнить контентом, ведь в противном случае просто невозможно оптимизировать и проверить правильность работы последних. При этом ручное создание тестовых данных порой очень время затратное и это время бывает соизмеримо со временем, требуемым на написание функционала.

В данном уроке я хотел бы представить Вашему вниманию, замечательную библиотеку Faker, написанную на языке PHP, которая представляет собой генератор случайных данных, причем сгенерировать можно данные практически любого формата.

Официальную страничку библиотеки, вместе с краткой, но довольно информативной документацией, можно найти на сервисе GitHub по ссылке. Для установки библиотеки на Ваш проект, достаточно выполнить одну простую команду в консоли, используя инструмент Composer:

При этом в директории проекта, будет создан каталог vendor, внутри которого Вы найдете рассматриваемую нами библиотеку. При этом хотел бы отметить, что по адресу vendor\fzaninotto\faker\src\Faker Вы найдете файл Generator.php, в котором определен одноименный класс Generator, свойства которого как раз предоставляют доступ к сгенерированным данным. Собственно в комментариях перед определением класса – приведен краткий справочник по хранимым данным в каждом свойстве (это на тот случай, если у Вас не будет доступа к страничке библиотеки на сервисе GitHub).

Теперь приступаем к работе с самой библиотекой. Собственно первым делом подключаем файл autoload.php, который был сгенерирован инструментом composer:

Далее создаем объект класса Faker, используя метод create(). При этом в качестве первого аргумента можно передать код, интересующей Вас локализации (в комплекте библиотеки, поставляется множество различных локализаций).

Собственно все приготовления завершены, и можно приступать к генерации данных. При этом для создания тестовой информации, достаточно обратиться к соответствующему свойству или методу объекта $faker, в зависимости от того, какие данные Вас интересуют.

Для начала, предположим, что Вам нужно сформировать имя пользователя и его адрес. Для этого достаточно вывести на экран значения двух свойств:

Соответственно результат будет следующим:

К свойствам можно обращаться многократно, к примеру, в цикле, что приведет к созданию множества тестовых данных. К примеру, давайте сгенерируем случайные числа:

При этом на экране мы увидим следующее:

При добавлении модификатора unique(), Вы сможете создать уникальные не повторяющиеся данные.

Есть также модификатор позволяющий, разрешить пропуск генерации данных, его имя optional():

Помимо этого создаваемые данные можно провалидировать, в соответствии с логикой, описанной в пользовательской функции. К примеру сгенерируем числа, которые больше 5:

На экране мы увидим следующее:

Помимо простых значений, можно генерировать более сложные, которые будут возвращаться в виде массива. К примеру, давайте сгенерируем информацию о кредитных картах, для платежных систем.

На экране мы при этом увидим следующий результат:

Также можно создать информацию для формирования данных о пользователе:

Ну и то же самое для русской локализации:

Собственно здесь я привел только малую часть доступных свойств и методов, более подробно библиотека рассмотрена в видео версии урока.

Как Вы видите инструмент достаточно полезный и буквально за несколько минут можно получить любой набор тестовых данных и передать их либо на отображение в браузер, либо на сохранение в базу данных, файл или же необходимый документ.

На этом статья завершена. Всего Вам доброго и удачного кодирования!

Язык выводимых данных Faker’ом в Laravel Factoryes

В Laravel встроен faker и после установки уже существует готовый класс для заполнения готовой таблицы в файле ‘UserFactory.php’, содержащий:

Отсюда вопрос как изменить язык данных, в оф документации все написано конечно же но как это применить сюда?

И еще небольшой вопрос, так и не понял как он отсюда определяет в какую таблицу заносить данные, не вижу явной связи c таблицей ‘users’. Из командной строки вызываем:


1 ответ 1

Чтобы поменять язык глобально, в AppServiceProvider::register() добавьте:

Если в конкретном случае нужен другой язык, то можно создать новый генератор на месте:

так и не понял как он отсюда определяет в какую таблицу заносить данные

Модель знает, в какую таблицу их заносить.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками php laravel или задайте свой вопрос.

Похожие

Подписаться на ленту

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

дизайн сайта / логотип © 2020 Stack Exchange Inc; пользовательское содержимое попадает под действие лицензии cc by-sa 4.0 с указанием ссылки на источник. rev 2020.11.7.35374

Faker — генератор случайных данных

No.: 578401182
issued: May/12/2015
expires: May/11/2025
P Driver License

8396690 — issued in (DC) on 12/05/2015, expires 07/25/2023

5PUW693 — issued in California (CA) in year 2010

EMPLOYMENT

FINANCE

PERSONAL INFORMATION

First Lil’ Wayne has a major seizure and now Chris Brown? Someone is out to kill horrible musicians. It’s quite elementary my dear Watson.

Truth, like light, blinds. Falsehood, on the contrary, is a beautiful twilight that enhances every object.

Beer trailblazer. Infuriatingly humble bacon fanatic. Freelance web maven. Tv lover.

Faker — генератор случайных данных

Для начала установим копию Laravel на нужный сервер, как это делается можно почитать и посмотреть на разных сайтах, в том числе и на англоязычном сайте разработчиков, в разделе документации. Кстати, они там добавили два туториала по созданию to-do списка, один попроще, другой посложнее. Раньше этого не было, и была только одна документация. Я думаю, что они сделали правильно, что добавили эти два примера законченных приложений. Потому что когда в первый раз сталкиваешься с фреймворком, и тем более с достаточно многофункциональным, таким как Laravel, трудно сразу понять, как же это все вместе работает. Если вы не очень хорошо знаете английский, то перевод документации и материалов по созданию to-do списка можно найти на русскоязычных сайтах.

Топ-пост этого месяца:  Топ плагинов jQuery. Плагин Slidebars для меню

Пока набирал этот материал, Laravel обновили до версии 5.3 и обучающие материалы по созданию to-do списка из документации для этой версии убрали, поэтому, если что смотрите их для версии 5.2.

После того как вы установили папку с проектом нужно подкорректировать файл .env, который находится в корне. Для отработки материала из этой статьи нужно лишь настроить соединение с БД (тип БД, имя БД, пользователь, пароль). Я использую MySql.

Далее, нам нужно создать таблицы в БД. Делается это с помощью файлов миграций. В этих файлах вы описываете структуру будущих таблиц, после чего по одной команде в консоли Laravel за вас создает эти таблицы. Плюс этих файлов в том, что если вам потребуется многократно создавать таблицы, вам останется только каждый раз набирать одну команду. Это удобно, но удобство на этом не заканчивается. Вот, для примера, участок кода из файла миграции: Думаю, тут наглядно понятно, из каких столбцов ваша таблица будет состоять. Файлы миграций находятся в папке (database → migrations). Подробнее, о том, как создаются файлы миграций можно почитать в документации. По умолчанию, в папке migrations уже есть два файла: create_users_table.php и create_password_resets_table.php. В этом материале я буду использовать первый из них. Создавать дополнительных файлов миграций нам сегодня не потребуется.

Итак, чтобы создать таблицу из файла миграции нужно в командной строке набрать команду: В результате выполнения этой команды будет показано следующее: Это значит, что таблицы в БД созданы.

После этого таблицы нужно наполнить содержимым. Первый способ – это seeding. Находите файл DatabaseSeeder.php (database → seeds), указываете данные, которыми вы хотите наполнить таблицы и в консоли пишете следующую команду: После чего таблицы будут заполнены нужными вам данными. Можно добавить свои данные или использовать faker. Подробнее читайте в документации.

Но материал этот посвящен не сидингу и миграциям, а тому, что появилось в версии 5.1 – это factories. Эти самые factories или фабрики можно найти в папке database → factories. Естественно, например, в четвертой версии фреймворка этой папки не было. Кстати, разработчики основательно перетряхнули папку app. Например, те же миграции и сидинги находились в папке database, которая в свою очередь находилась в папке app. Теперь папку database вынесли из папки app в корневую папку проекта. Папка controllers перекочевала в папку Http (внутри папки app). Папку models вообще убрали. И много чего еще в папке app появилось нового. После четвертой версии приходится привыкать к новой структуре папок. Но наглядно видно, что фреймворк не стоит на месте, а активно равивается.

Вернемся к фабрикам. Напоминаю, что фабрики можно найти в папке database → factories. Там вы найдете файл ModelFactory.php. По умолчанию в этом файле следующее содержимое: Здесь мы можем определить какие столбцы таблицы, и какими данными нужно заполнять.

Возвращаемся в командную строку. Создадим вручную, например, 5 пользователей. Строки таблицы для каждого пользователя будут заполнены случайными данными (так как это определено в фале ModelFactory.php). Для этого используем tinker.

Введем такую команду: Затем, должны появиться строки: Теперь можно создать табличные записи всего лишь одной строчкой: В результате выполнения команды в консоли вы увидите результат: В таблицу пользователей внесено 5 записей.

Welcome to Faker’s documentation!¶

Faker is a Python package that generates fake data for you. Whether you need to bootstrap your database, create good-looking XML documents, fill-in your persistence to stress test it, or anonymize data taken from a production service, Faker is for you.

Faker is heavily inspired by PHP Faker, Perl Faker, and by Ruby Faker.

For more details, see the extended docs.

Basic Usage¶

Install with pip:

Note: this package was previously called fake-factory .

Use faker.Faker() to create and initialize a faker generator, which can generate data by accessing properties named after the type of data you want.

Each call to method fake.name() yields a different (random) result. This is because faker forwards faker.Generator.method_name() calls to faker.Generator.format(method_name) .

Providers¶

Each of the generator properties (like name , address , and lorem ) are called “fake”. A faker generator has many of them, packaged in “providers”.


Localization¶

faker.Faker can take a locale as an argument, to return localized data. If no localized provider is found, the factory falls back to the default en_US locale.

You can check available Faker locales in the source code, under the providers package. The localization of Faker is an ongoing process, for which we need your help. Please don’t hesitate to create a localized provider for your own locale and submit a Pull Request (PR).

Included localized providers:

  • ar_EG — Arabic (Egypt)
  • ar_PS — Arabic (Palestine)
  • ar_SA — Arabic (Saudi Arabia)
  • bg_BG — Bulgarian
  • bs_BA — Bosnian
  • cs_CZ — Czech
  • de_DE — German
  • dk_DK — Danish
  • el_GR — Greek
  • en_AU — English (Australia)
  • en_CA — English (Canada)
  • en_GB — English (Great Britain)
  • en_NZ — English (New Zealand)
  • en_US — English (United States)
  • es_ES — Spanish (Spain)
  • es_MX — Spanish (Mexico)
  • et_EE — Estonian
  • fa_IR — Persian (Iran)
  • fi_FI — Finnish
  • fr_FR — French
  • hi_IN — Hindi
  • hr_HR — Croatian
  • hu_HU — Hungarian
  • hy_AM — Armenian
  • it_IT — Italian
  • ja_JP — Japanese
  • ka_GE — Georgian (Georgia)
  • ko_KR — Korean
  • lt_LT — Lithuanian
  • lv_LV — Latvian
  • ne_NP — Nepali
  • nl_NL — Dutch (Netherlands)
  • no_NO — Norwegian
  • pl_PL — Polish
  • pt_BR — Portuguese (Brazil)
  • pt_PT — Portuguese (Portugal)
  • ro_RO — Romanian
  • ru_RU — Russian
  • sl_SI — Slovene
  • sv_SE — Swedish
  • tr_TR — Turkish
  • uk_UA — Ukrainian
  • zh_CN — Chinese (China)
  • zh_TW — Chinese (Taiwan)

Command line usage¶

When installed, you can invoke faker from the command-line:

  • faker : is the script when installed in your environment, in development you could use python -m faker instead
  • -h , —help : shows a help message
  • —version : shows the program’s version number
  • -o FILENAME : redirects the output to the specified filename
  • -l : allows use of a localized prov > -r REPEAT : will generate a specified number of outputs
  • -s SEP : will generate the specified separator after each generated output
  • -i list of additional custom prov > fake : is the name of the fake to generate an output for, such as name , address , or text
  • [fake argument . ] : optional arguments to pass to the fake (e.g. the profile fake takes an optional list of comma separated field names as the first argument)

How to create a Prov >

How to customize the Lorem Provider¶

You can provide your own sets of words if you don’t want to use the default lorem ipsum one. The following example shows how to do it with a list of words picked from cakeipsum :

How to use with Factory Boy¶

Factory Boy already ships with integration with Faker . Simply use the factory.Faker method of factory_boy :

Accessing the random instance¶

The .random property on the generator returns the instance of random.Random used to generate the values:

By default all generators share the same instance of random.Random , which can be accessed with from faker.generator import random . Using this may be useful for plugins that want to affect all faker instances.

Seeding the Generator¶

When using Faker for unit testing, you will often want to generate the same data set. For convenience, the generator also prov > seed() method, which seeds the shared random number generator. Calling the same methods with the same version of faker and seed produces the same results.

Each generator can also be switched to its own instance of random.Random , separate to the shared one, by using the seed_instance() method, which acts the same way. For example:

Please note that as we keep updating datasets, results are not guaranteed to be consistent across patch versions. If you hardcode results in your test, make sure you pinned the version of Faker down to the patch number.

Faker — генератор случайных данных

Faker is a PHP library that generates fake data for you. Whether you need to bootstrap your database, create good-looking XML documents, fill-in your persistence to stress test it, or anonymize data taken from a production service, Faker is for you.

Faker is heavily inspired by Perl’s Data::Faker, and by ruby’s Faker.

Faker requires PHP >= 5.3.3.

Table of Contents

Faker supports both PSR-0 as PSR-4 autoloaders.

You can also load Fakers shipped PSR-0 autoloader

alternatively, you can use any another PSR-4 compliant autoloader

Create fake data

Use Faker\Factory::create() to create and initialize a faker generator, which can generate data by accessing properties named after the type of data you want.

Even if this example shows a property access, each call to $faker->name yields a different (random) result. This is because Faker uses __get() magic, and forwards Faker\Generator->$property calls to Faker\Generator->format($property) .

Tip: For a quick generation of fake data, you can also use Faker as a command line tool thanks to faker-cli.

Each of the generator properties (like name , address , and lorem ) are called «formatters». A faker generator has many of them, packaged in «providers». Here is a list of the bundled formatters in the default locale.

Methods accepting a $timezone argument default to date_default_timezone_get() . You can pass a custom timezone string to each method, or define a custom timezone for all time methods at once using $faker::setDefaultTimezone($timezone) .

Faker provides three special providers, unique() , optional() , and valid() , to be called before any provider.

If you would like to use a modifier with a value not generated by Faker, use the passthrough() method. passthrough() simply returns whatever value it was given.

Faker\Factory can take a locale as an argument, to return localized data. If no localized provider is found, the factory fallbacks to the default locale (en_US).

You can check available Faker locales in the source code, under the Provider directory. The localization of Faker is an ongoing process, for which we need your help. Don’t hesitate to create localized providers to your own locale and submit a PR!

Populating Entities Using an ORM or an ODM

Faker provides adapters for Object-Relational and Object-Document Mappers (currently, Propel, Doctrine2, CakePHP, Spot2, Mandango and Eloquent are supported). These adapters ease the population of databases through the Entity classes provided by an ORM library (or the population of document stores using Document classes provided by an ODM library).


To populate entities, create a new populator class (using a generator instance as parameter), then list the class and number of all the entities that must be generated. To launch the actual data population, call the execute() method.

Note that some of the populators could require additional parameters. As example the doctrine populator has an option to specify its batchSize on how often it will flush the UnitOfWork to the database.

Here is an example showing how to populate 5 Author and 10 Book objects:

The populator uses name and column type guessers to populate each column with relevant data. For instance, Faker populates a column named first_name using the firstName formatter, and a column with a TIMESTAMP type using the dateTime formatter. The resulting entities are therefore coherent. If Faker misinterprets a column name, you can still specify a custom closure to be used for populating a particular column, using the third argument to addEntity() :

In this example, Faker will guess a formatter for all columns except ISBN , for which the given anonymous function will be used.

Tip: To ignore some columns, specify null for the column names in the third argument of addEntity() . This is usually necessary for columns added by a behavior:

Of course, Faker does not populate autoincremented primary keys. In addition, Faker\ORM\Propel\Populator::execute() returns the list of inserted PKs, indexed by class:

Note: Due to the fact that Faker returns all the primary keys inserted, the memory consumption will go up drastically when you do batch inserts due to the big list of data.

In the previous example, the Book and Author models share a relationship. Since Author entities are populated first, Faker is smart enough to relate the populated Book entities to one of the populated Author entities.

Lastly, if you want to execute an arbitrary function on an entity before insertion, use the fourth argument of the addEntity() method:

Seeding the Generator

You may want to get always the same generated data — for instance when using Faker for unit testing purposes. The generator offers a seed() method, which seeds the random number generator. Calling the same script twice with the same seed produces the same results.

Tip: DateTime formatters won’t reproduce the same fake data if you don’t fix the $max value:

Tip: Formatters won’t reproduce the same fake data if you use the rand() php function. Use $faker or mt_rand() instead:

Faker Internals: Understanding Providers

A Faker\Generator alone can’t do much generation. It needs Faker\Provider objects to delegate the data generation to them. Faker\Factory::create() actually creates a Faker\Generator bundled with the default providers. Here is what happens under the hood:

Whenever you try to access a property on the $faker object, the generator looks for a method with the same name in all the providers attached to it. For instance, calling $faker->name triggers a call to Faker\Provider\Person::name() . And since Faker starts with the last provider, you can easily override existing formatters: just add a provider containing methods named after the formatters you want to override.

That means that you can easily add your own providers to a Faker\Generator instance. A provider is usually a class extending \Faker\Provider\Base . This parent class allows you to use methods like lexify() or randomNumber() ; it also gives you access to formatters of other providers, through the protected $generator property. The new formatters are the public methods of the provider class.

Here is an example provider for populating Book data:

To register this provider, just add a new instance of \Faker\Provider\Book to an existing generator:

Now you can use the two new formatters like any other Faker formatter:

Tip: A provider can also be a Plain Old PHP Object. In that case, all the public methods of the provider become available to the generator.

Real Life Usage

The following script generates a valid XML document:

Running this script produces a document looking like:

Использование PHP Faker в Laravel для генерации уникальной записи при посеве базы данных с использованием фабрики

Итак, похоже на уникальное правило валидации (см. Https://github.com/felixkiss/uniquewith-validator), я хочу знать, как сгенерировать запись, где один столбец уникален с другим. Я хочу засеять мою базу данных следующим образом.

В таблице «шаги» есть 12 шагов. Каждый шаг должен содержать 5 категорий, связанных с каждой из них, которые хранятся в таблице «step_categories». Каждой из этих категорий присваивается уникальный порядковый номер от 1 до 5, который уникален для каждого «step_id».

Посмотрите это изображение здесь для примера того, как должна выглядеть база данных: https://imgur.com/a/XYA5yyn

Мне пришлось вручную сделать записи в базе данных для приведенного выше примера изображения. Я не хочу генерировать это вручную каждый раз, скажем, я ошибаюсь и, например, откатываю миграции.

Я использую фабрику для создания этих данных. Таким образом, заводское имя — StepCategoriesFactory.php и я четко StepCategoriesFactory.php фабрику с помощью метода create() из файла DatabaseSeeder.php .

Я думал об этом в цикле for, тогда я дошел до того, что понял, когда я назвал ‘step_id’ => App\Model::all()->random()->id чтобы захватить новый id, что я не смог бы гарантировать, что я не хватаю идентификатор, который я только что создал 5 записей. Я действительно новичок в Laravel, и я не уверен, с чего начать это. Там нет реальной информации о SO, где фейкер может использовать уникальный с другим столбцом. Как бы я пошел по этому поводу?

ПРИМЕЧАНИЕ. Идентификатор шага не всегда будет 1-12. Идентификатор шага может отличаться в зависимости от того, удаляется или удаляется шаг. Поэтому просто присваивание step_id равным 1-12 не будет работать.

ОБНОВЛЕНИЕ: Вот код, который я только что написал, и я думаю, что я на правильном пути. Может быть. Я захватил step_id этим полем number как это всегда будет 1-12, и я захватил IID из записи. Но теперь я зациклился на том, как создать порядок 1-5, не повторяя себя. Я все еще не запускал это пока как неполное, и я знаю, что это вызовет ошибку без правильного номера заказа.

ОБНОВЛЕНИЕ 2: Я думаю, что я на правильном пути здесь. Однако я получаю неопределенную переменную ошибку. Когда я помещаю первую строку из анонимной функции, она переустанавливает порядок на «1» для каждой записи. Как сделать переменную $ autoIncrement доступной для анонимной функции? Сеялка осталась неизменной между обновлениями.

Изображение ошибки: https://imgur.com/a/ywkd0Lb Второе изображение с ошибкой Die/Dump в терминале: https://imgur.com/a/rOGRv32

ОБНОВЛЕНИЕ 3: Я забыл use ($autoIncrement) строку кода для анонимной функции. Код ниже был обновлен, но теперь я получаю другую ошибку, говоря, что столбец порядка имеет нулевое значение и не может быть вставлен. ясно, что это должно быть «1». Даже после того, как я вызываю свой $autoIncrement->next(); который должен увеличивать его до «1», он все равно возвращает null в соответствии с терминалом. Однако, когда я делаю deadump на $autoIncrement->current() он возвращает 1. Weird.

StepCategoriesFactory.php

Изменение: Положите щедрость на этот вопрос, поскольку я думаю, что было бы полезно, чтобы сообщество получило подробный ответ. Я ищу помощь, чтобы объяснить, как сделать, чтобы убедиться, что я хватаю одну и ту же запись через каждый цикл.

Faker — генератор случайных данных

Группа: Главные администраторы
Сообщений: 14349
Регистрация: 12.10.2007
Из: Twilight Zone
Пользователь №: 1

Node.JS*,
JavaScript*
Для того, чтобы продемонстрировать работу приложения, нам частенько приходится заставлять его работать с выдуманными данными, ведь негоже, чтобы заголовки были пустыми, а таблицы лишь расчерченными, но не заполненными.


Как правило, при создании приложения, мы не очень-то переживаем о том, c какими именно данными в итоге оно будет работать, мы просто выдумываем какой-то пример, которого достаточно для того, чтобы продолжать работать над логикой, и, собственно, продолжаем работать над логикой.

К счастью, Marak создал опрятное средство, которое позволяет нам генерировать фейковые данные на лету: Faker.

Начнем с небольшого примера

Допустим, нам нужно на лету создать пользователя. Мы хотим, чтобы у него было имя, почта, адрес, биография и даже аватар.

Что позволяет нам делать Faker:

var user = <
name: faker.name.findName(),
email: faker.internet.email(),
address: faker.address.streetAddress(),
bio: faker.lorem.sentence(),
image: faker.image.avatar()
>;

Все. Теперь у нас есть полноценный пользователь, в образе объекта, который обладает всеми желаемыми свойствами:

<
«name»: «Adaline Carroll»,
«email»: «Albina.Ledner@gmail.com»,
«address»: «545 Fritsch Locks»,
«bio»: «dolorem officiis doloribus ut»,
«image»: «https://s3.amazonaws.com/uifaces/faces/twitter/joelhelin/128.jpg»
>

Теперь мы можем делать с нашим пользователем все, что угодно, в любой части программы, не имея дел с базой данных, которую надо было бы заселять вручную. Дальше я расскажу вам о некоторых интересных особенностях Faker.

Вы можете работать с Faker как в браузере, так и на сервере с помощью Node.

Следуя документации разберемся с тем, как его настроить и установить.

Подключение к странице

var faker = require(‘faker’);

var name = faker.name.findName();
var randomEmail = faker.internet.email();

Вот и все. Давайте посмотрим, с какими еще данными мы можем рабоать.

Список данных, которые Faker может сгенерировать для нас, достаточно велик. Вот основной:

Каждый из пунктов имеет много подпунктов и настроек. Например:

К каждому свойству можно обратиться с помощью функции:

// Chris
var firstName = faker.name.firstName();

// Sevilleja
var lastName = faker.name.lastName();

// Chris Sevilleja
var findName = faker.name.findName();

// Mr.
var prefix = faker.name.prefix();

// PhD
var suffix = faker.name.suffix();

Полный список данных описанием, с которыми позволяет работать Faker, можно изучить здесь.

Также для множества категорий данных Faker предоставляет набор «хелперов», которые призваны еще больше упростить работу. Вместо того, чтобы извлекать содержимое из одного поля, а потом браться за другое, «хэлперы» позволяют работать с готовыми, объединенными наборами данных.

Приведу несколько примеров.

Готовый набор данных о пользователе, который включает в себя имя, фамилию, почту, адрес и аватар:

<
«name»: «Kaleigh»,
«username»: «Kaleigh60»,
«avatar»: «https://s3.amazonaws.com/uifaces/faces/twitter/mbilderbach/128.jpg»,
«email»: «Kaleigh6047@gmail.com»,
«dob»: «1961-08-07T02:37:45.068Z»,
«phone»: «113.601.0680»,
«address»: <
«street»: «Myah Course»,
«suite»: «Apt. 657»,
«city»: «Boyerberg»,
«zipcode»: «66413-8920»,
«geo»: <
«lat»: «-44.6203»,
«lng»: «16.7454»
>
>,
«website»: «megane.biz»,
«company»: <
«name»: «Little-Reinger»,
«catchPhrase»: «Enhanced regional emulation»,
«bs»: «interactive generate bandwidth»
>
>

Сокращенный набор данных, но включающий в себя аватар:

<
«name»: «George Kohler»,
«username»: «Emilio_Grady49»,
«email»: «Aurore_Wintheiser90@gmail.com»,
«address»: <
«street»: «Corwin Cove»,
«suite»: «Suite 550»,
«city»: «New Myah»,
«zipcode»: «57817»,
«geo»: <
«lat»: «-3.4045»,
«lng»: «-16.7806»
>
>,
«phone»: «1-806-338-0724 x844»,
«website»: «katheryn.net»,
«company»: <
«name»: «Purdy, Lesch and Jacobi»,
«catchPhrase»: «Programmable incremental frame»,
«bs»: «24/365 optimize initiatives»
>
>

<
«amount»: «757.24»,
«date»: «2012-02-02T08:00:00.000Z»,
«business»: «Bahringer Group»,
«name»: «Home Loan Account 5279»,
«type»: «deposit»,
«account»: «63843216»
>

Полный набор данных о пользователе, включая posts, необходимый для симуляции записей в блоге:

<
«name»: «Fern Ritchie»,
«username»: «Vladimir.Feest»,
«email»: «Llewellyn_Robel@gmail.com»,
«address»: <
«streetA»: «Ratke Street»,
«streetB»: «431 Terry Prairie»,
«streetC»: «027 Tyler Plaza Apt. 166»,
«streetD»: «Apt. 095»,
«city»: «Crooksstad»,
«state»: «New Hampshire»,
«country»: «Ukraine»,
«zipcode»: «53303»,
«geo»: <
«lat»: «-5.9355»,
«lng»: «20.5942»
>
>,
«phone»: «477-849-4756 x71564»,
«website»: «emile.org»,
«company»: <
«name»: «Stehr Inc»,
«catchPhrase»: «Universal 6th generation contingency»,
«bs»: «granular whiteboard bandwidth»
>,
«posts»: [ <
«words»: [«voluptatem», «quia», «ipsam»],
«sentence»: «maxime et nemo et sed»,
«sentences»: «blanditiis sint molestiae facilisnet molestiae velit consequatur sit aut iure nihilneaque quo voluptatibus»,
«paragraph»: «reiciendis exercitationem assumenda provident odionasperiores fugit officianperferendis exercitationem annam et eana ex autem ducimusnsint tenetur officia ratione nesciunt impedit qui»
>, <
«words»: [«voluptatem», «fugiat», «laborum»],
«sentence»: «quis vel consequatur placeat eum voluptas laboriosam»,
«sentences»: «natus ut assumenda esse rerum repudiandaentempore excepturi nemo et velit inventore minus nihil officiisnexcepturi corrupti enim explicabo quaerat»,
«paragraph»: «sint eum tenetur id occaecatinitaque veritatis aperiam libero quibusdam repudiandae explicabo accusamus rerum inventorenet placeat enimndolor sit dolores nulla doloribus»
>, <
«words»: [«illum», «quia», «voluptas»],
«sentence»: «libero eos quia velit qui sint aut»,
«sentences»: «eligendi esse blanditiis magni perferendis cumque quibusdam qui iste vitaenaliquam odio aut quaeratnveritatis consequatur qui consequuntur»,
«paragraph»: «qui facere ex et consequaturnut iusto maxime quia deleniti sint autnut inventore magni ipsum necessitatibus et numquam qui consectetur aperiamnnam non quisquam tempore corporis adipisci nobis remnqui doloribus inventore itaque est corrupti modi vero quidem quaerat»
>],
«accountHistory»: [ <
«amount»: «435.13»,
«date»: «2012-02-02T08:00:00.000Z»,
«business»: «Dare Inc»,
«name»: «Home Loan Account 4225»,
«type»: «payment»,
«account»: «69883581»
>, <
«amount»: «993.77»,
«date»: «2012-02-02T08:00:00.000Z»,
«business»: «Yundt, VonRueden and Marks»,
«name»: «Credit Card Account 2737»,
«type»: «withdrawal»,
«account»: «32957725»
>, <
«amount»: «844.46»,
«date»: «2012-02-02T08:00:00.000Z»,
«business»: «Sipes-Boyer»,
«name»: «Investment Account 5882»,
«type»: «deposit»,
«account»: «50708763»
>]
>

Использование шаблона Node API

Мы можем быстро создать Node API, которое будет возвращать фейковые данные. В этом примере конечным результатом работы с API будет возврат пользовательских данных:

app.get(‘/api/user’, function(req, res) <
res.json( <
name: faker.name.findName(),
email: faker.internet.email(),
address: faker.address.streetAddress(),
bio: faker.lorem.sentence(),
image: faker.image.avatar()
>;
>);

После того, как сервер будет запущен, результат работы API отобразится Postman’ом; как мы видим, это данные в формате JSON:

Надеюсь, что Faker упростит создание приложений, некоторым разработчикам. Этот пакет позволяет с легкостью генерировать данные и организовывать работу через API. Также рекомендуя посетить официальный сайт проекта, там вы найдете много интересного и сможете оценить объем данных, которыми позволяет манипулировать Faker.

Faker – генератор случайных данных

Посмотрите уроки по веб-разработке:

На ранних этапах создания приложения, всегда возникает острая необходимость в тестовых данных, то есть в данных, которые будут отображаться на экран при проверке работоспособности отдельных участков кода. Также при работе с базой данных и формированию SQL запросов, таблицы желательно наполнить контентом, ведь в противном случае просто невозможно оптимизировать и проверить правильность работы последних.

При этом ручное создание тестовых данных порой очень время затратное и это время бывает соизмеримо со временем, требуемым на написание функционала.

Поэтому в данном уроке я хотел бы представить Вашему вниманию, замечательную библиотеку Faker, написанную на языке PHP, которая представляет собой генератор случайных данных, причем сгенерировать можно данные практически любого формата.

Топ-пост этого месяца:  Категории функций — API — WordPress
Добавить комментарий