Uso de Faker para generar datos de relleno para pruebas automatizadas

Lo que vas a crear

Faker es una biblioteca de código abierto creada por Francois Zaninotto que genera datos de relleno artificial para su aplicación y sus necesidades de prueba.

Faker se puede utilizar en una aplicación PHP de vainilla, un marco como Yii o Laravel, o dentro de una biblioteca de pruebas como la que mencionamos con Codeception en este tutorial anterior de Envato Tuts +.

En el tutorial de hoy, revisaré la instalación básica y el uso de Faker y sus capacidades. Como dice Zaninotto:

"Ya sea que necesite iniciar su base de datos, crear documentos XML atractivos, completar su persistencia para realizar pruebas de estrés o anonimizar datos tomados de un servicio de producción, Faker es para usted".

Y, en general, ofrece una amplia gama de capacidades simples útiles para cualquier régimen de prueba.

Un pequeño recordatorio antes de comenzar, participo en los hilos de comentarios a continuación. Estoy especialmente interesado si tiene ideas adicionales o desea sugerir temas para futuros tutoriales. Si tiene alguna pregunta o sugerencia de tema, por favor publique a continuación. También puedes contactarme en Twitter @reifman directamente.

Empezando

Instalando faker

Comencé creando un nuevo árbol de códigos y agregando fzaninotto / faker a composer.json abajo:

"name": "Faker Demonstration", "description": "para Envato Tuts +", "keywords": ["faker", "php", "jeff reifman"], "homepage": "http: // www. lookahead.io/ "," type ":" project "," license ":" BSD-3-Clause "," estabilidad mínima ":" stable "," require ": " php ":"> = 5.6. 0 "," fzaninotto / faker ":" * " 

Luego, actualicé el compositor:

$ actualización de compositor Cargando repositorios de compositor con información de paquetes Actualizando dependencias (incluyendo require-dev) - Instalando fzaninotto / faker (v1.6.0) Cargando desde caché Escribiendo archivo de bloqueo Generando archivos de carga automática 

Faker está instalado en el directorio de proveedores. Entonces, cargué en la parte superior de un archivo index.php:

A continuación, quise probar algunos ejemplos simples de generar datos..

Ejemplos simples

Extendí los ejemplos de Faker de la siguiente manera y los ejecuté desde http: // localhost: 8888 / faker:

nombre; // 'Lucy Cechtelar'; espaciador(); echo $ faker-> direccion; // "426 Jordy Lodge // Cartwrightshire, SC 88120-6700" spacer (); echo $ faker-> texto; // Dolores sit sint laboriosam dolorem culpa et autem. Beatae nam sunt fugit // et sit et mollitia sed. // Fuga deserunt tempora facere magni omnis. Omnis quia temporibus laudantium // sit minima sint. espaciador(); función espaciador () echo '
'; ?>

Con actualizaciones rápidas, se me presentaron resultados variables, tales como:

Ruthie Beier 37851 Gusikowski Flat Suite 594 Port Keithmouth, NM 06110 Reprehenderit eos suscipit sit modi architecto necessitatibus. Error maiores qui vero non omnis. Quaerat mollitia dolore deserunt quia quidem beatae. 

Y:

Darron Hessel 657 Elijah Lock Suite 202 Nitzschemouth, AZ 11166 Culpa dolorum quidem distinctio eius necessitatibus. Mollitia ut nostrum et ut quas veniam et. Unde iure molestiae aperiam fuga voluptatibus quo. 

Y:

Fredy Fadel MD 53328 Eldora Isle Apt. 634 West Eleanore, CA 95798-3025 Eligendi eos laudantium eveniet ad. Qui a voluptatibus est quia voluptatem. Dolorum pariatur quaerat nulla.

Faker cumple su promesa..

Proveedores por defecto de Faker

Todos los métodos de generación de datos en Faker se crean a partir de la implementación de proveedores. Aquí está el código que registra a los proveedores predeterminados de Faker: está hecho para usted:

addProvider (new Faker \ Provider \ en_US \ Person ($ faker)); $ faker-> addProvider (new Faker \ Provider \ en_US \ Address ($ faker)); $ faker-> addProvider (new Faker \ Provider \ en_US \ PhoneNumber ($ faker)); $ faker-> addProvider (new Faker \ Provider \ en_US \ Company ($ faker)); $ faker-> addProvider (nuevo Faker \ Provider \ Lorem ($ faker)); $ faker-> addProvider (nuevo Faker \ Provider \ Internet ($ faker));

Así que arriba, cuando solicité un dirección de Faker, buscó en todos los proveedores los métodos que coincidían, en última instancia, utilizando el Dirección() proveedor.

También puede escribir sus propios proveedores o explorar varias extensiones de Faker que están disponibles en la web..

Modificadores

Faker también ofrece modificadores especiales para ayudarlo en sus pruebas, tales como único (), opcional () o válido (). Por ejemplo, puedes generar números únicos:

// unique () obliga a los proveedores a devolver valores únicos $ values ​​= array (); para ($ i = 0; $ i < 10; $i++)  // get a random digit, but always a new one, to avoid duplicates $values []= $faker->unique () -> randomDigit;  print_r ($ valores);

Aquí está la salida de valores únicos:

Array ([0] => 7 [1] => 6 [2] => 0 [3] => 2 [4] => 5 [5] => 1 [6] => 8 [7] => 4 [8] => 9 [9] => 3)

Si usa el Opcional() Método, algunos números serán devueltos como NULO como si el usuario no ingresara un campo en su formulario. Nota: no pude conseguir que este método funcione correctamente.

Con válido(), puede registrar funciones que determinan si los datos de relleno cumplen con los requisitos específicos o devolverían un error o generarían un mensaje de error en un formulario de usuario.

Explorando los proveedores

Faker ofrece un amplio conjunto de métodos para generar datos aleatorios para su aplicación:

  • Base: métodos simples para letras aleatorias, números, cadenas procesadas y expresiones regulares
  • Lorem Ipsum Texto: texto latino aleatorio
  • Persona: nombres de personas
  • Dirección: direcciones de correo
  • Número de teléfono: números de teléfono
  • Empresa: nombres de empresas
  • Texto real: texto real escrito por seres humanos contra cadenas latinas sin sentido
  • Fecha y hora: fechas y horarios aleatorios.
  • Internet: correos electrónicos, dominios, etc..
  • Agente de usuario: cadenas del navegador
  • Pago: tarjeta de crédito y cadenas y números SWIFT.
  • Color: colores al azar
  • Archivo: extensiones de archivo, tipos de archivos y nombres de archivos
  • Imagen: URLs de imágenes de relleno de diferentes tipos.
  • Uuid: IDs únicas
  • Código de barras: varios tipos de códigos de barras, por ejemplo, ISBN13
  • Varios: códigos de encriptación, códigos de país, etc..
  • Sesgo: números aleatorios con sesgo

Experimentemos con algunos de estos métodos..

Información del pago

El siguiente código genera diez personas, su información de tarjeta de crédito y códigos de seguridad:

$ faker = Faker \ Factory :: create (); para ($ i = 0; $ i<10;$i++)  $cc = $faker->detalles de la tarjeta de crédito; $ cc ['seguridad'] = $ faker-> número Entre (199,499); var_dump ($ cc); espaciador (2); 

Aquí hay algunos resultados del código anterior:

Imágenes

Aquí hay un ejemplo simple de generación de imágenes:

$ faker = Faker \ Factory :: create (); $ ancho = 320; $ altura = 240; eco ''; 

Pero también puedes generar gatos:

eco '';

Puede ser la capacidad de generación de gatos la que me ganó. No puedo esperar a que la impresión tridimensional y la activación del alma funcionen con cosas como esta.

Datos Internacionalizados

Con el código siguiente, creé una tabla con cuatro columnas de nombres de Francia, Rusia, Estados Unidos y China:

eco '
francés ruso Inglés chino
'; $ faker = Faker \ Factory :: create ('fr_FR'); // crea un faker francés para ($ i = 0; $ i < 10; $i++) echo $faker->nombre; espaciador(); espaciador (2); eco ''; $ faker = Faker \ Factory :: create ('Ru_RU'); // crear ruso para ($ i = 0; $ i < 10; $i++) echo $faker->nombre; espaciador(); espaciador (2); eco ''; $ faker = Faker \ Factory :: create ('En_US'); // crear inglés para ($ i = 0; $ i < 10; $i++) echo $faker->nombre; espaciador(); espaciador (2); eco ''; $ faker = Faker \ Factory :: create ('zh_CN'); // crear chino para ($ i = 0; $ i < 10; $i++) echo $faker->nombre; espaciador(); eco '
';

Aquí está la salida:

Creación de direcciones de correo electrónico falsas

Aquí hay un código de ejemplo para generar 25 direcciones de correo electrónico falsas de proveedores gratuitos como Gmail y Yahoo:

$ valores = matriz (); para ($ i = 0; $ i < 25; $i++)  // get a random digit, but also null sometimes $values []= $faker->freeEmail ();  print_r ($ valores); salida; 

Aquí está la salida resultante:

Generando documentos XML

Faker ofrece un ejemplo útil de generar XML; sin embargo, requiere que estés trabajando con un marco y que tengas una arquitectura de vista:

      booleano (25)):?>   
streetAddress?> ciudad?> código postal?> estado?>
booleano (33)):?> bs?> booleano (33)):?> booleano (15)):?>
texto (400)?>]]>

En conclusión

Espero que esto haya sido una introducción básica para Faker, una biblioteca de PHP de código abierto, increíblemente útil..

Si desea leer más, recomiendo el Contenido de relleno de Jim Nielsen: herramientas, consejos y un ejemplo dinámico (Envato Tuts +), que proporciona una visión del diseñador de la aplicación sobre la generación de datos. Sugiere que puede ser más efectivo cuando aplica datos falsos para crear una experiencia más realista durante su proceso de diseño..

Si quieres saber cuándo llegará mi próximo tutorial de Envato Tuts +, sígueme @reifman en Twitter o visita la página de mi instructor. Actualmente, estoy trabajando en dos series que pueden apreciar:

  1. Programando con la serie Yii2
  2. Construyendo su inicio con PHP sobre el planificador de reuniones; ve y programa tu primera reunión hoy.

enlaces relacionados

  • Fzaninotto / Faker (GitHub)
  • Contenido de relleno: Herramientas, consejos y un ejemplo dinámico (Envato Tuts +)
  • Programación con Yii2: Pruebas automatizadas con Codeception (Envato Tuts +)