Faker gebruiken om fillergegevens voor geautomatiseerd testen te genereren

Wat je gaat creëren

Faker is een open-source bibliotheek gemaakt door Francois Zaninotto die kunstmatige vulstofgegevens genereert voor uw toepassing en zijn testbehoeften.

Faker kan worden gebruikt in een vanilla PHP-applicatie, een raamwerk zoals Yii of Laravel, of in een testbibliotheek zoals we hebben aangehaald met Codeception in deze eerdere Envato Tuts + tutorial.

In de tutorial van vandaag zal ik de basisinstallatie en het gebruik van Faker en zijn mogelijkheden bespreken. Zoals Zaninotto zegt:

"Of je nu je database moet booten, goed uitziende XML-documenten moet maken, je persistentie moet invullen om stress te testen of anonieme gegevens van een productiedienst moet anonimiseren, Faker is voor jou."

En over het algemeen levert het een breed scala aan eenvoudige mogelijkheden die nuttig zijn voor elk testregime.

Een kleine herinnering voordat we aan de slag gaan, ik neem wel deel aan de onderstaande commentaarthreads. Ik ben vooral geïnteresseerd als u aanvullende ideeën heeft of onderwerpen wilt voorstellen voor toekomstige zelfstudies. Als u een vraag of een suggestie voor een onderwerp heeft, kunt u hieronder berichten plaatsen. Je kunt me ook rechtstreeks op Twitter @reifman bereiken.

Ermee beginnen

Faker installeren

Ik begon met het maken van een nieuwe codestructuur en het toevoegen ervan fzaninotto / oplichter naar composer.json hieronder:

"name": "Faker Demonstration", "description": "for Envato Tuts +", "keywords": ["faker", "php", "jeff reifman"], "homepage": "http: // www. lookahead.io/ "," type ":" project "," licentie ":" BSD-3-clausule "," minimum-stabiliteit ":" stable "," require ": " php ":"> = 5.6. 0 "," fzaninotto / faker ":" * " 

Daarna heb ik de componist bijgewerkt:

$ composer update Laden van composer-repositories met pakketinformatie Bijwerken van afhankelijkheden (inclusief require-dev) - Installeren van fzaninotto / faker (v1.6.0) Laden vanuit cache Schrijven lock-bestand Autoload-bestanden genereren 

Faker wordt geïnstalleerd in de leveranciersdirectory. Dus toen heb ik bovenaan een index.php bestand geladen:

Vervolgens wilde ik een paar eenvoudige voorbeeldscenario's van het genereren van gegevens uitproberen.

Simpele voorbeelden

Ik heb de Faker-voorbeelden als volgt uitgebreid en ze uitgevoerd vanaf http: // localhost: 8888 / faker:

naam; // 'Lucy Cechtelar'; afstandhouder (); echo $ faker-> adres; // "426 Jordy Lodge // Cartwrightshire, SC 88120-6700" spacer (); echo $ faker-> tekst; // Dolores sit sint labiosam 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. afstandhouder (); function spacer () echo '
'; ?>

Met snelle vernieuwingen kreeg ik verschillende resultaten te zien, zoals:

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. 

En:

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. 

En:

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 voldoet aan zijn belofte.

Faker's Default Providers

Alle methoden voor het genereren van gegevens in Faker zijn gemaakt op basis van de implementatie van providers. Hier is de code die Faker's standaardproviders registreert: het is voor u gedaan:

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

Dus hierboven, toen ik om een ​​vroeg adres van Faker zocht hij alle providers op naar methoden die overeenkwamen, uiteindelijk met behulp van de Adres() leverancier.

U kunt ook uw eigen providers schrijven of een aantal extensies doorbladeren naar Faker die beschikbaar zijn op internet.

modifiers

Faker biedt ook speciale modifiers om uw testen te ondersteunen, zoals unique (), optional () of valid (). U kunt bijvoorbeeld unieke nummers genereren:

// unique () dwingt providers om unieke waarden $ values ​​= array () te retourneren; voor ($ i = 0; $ i < 10; $i++)  // get a random digit, but always a new one, to avoid duplicates $values []= $faker->unieke () -> randomDigit;  print_r ($ waarden);

Dit is de uitvoer van unieke waarden:

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

Als u de optioneel () methode, sommige nummers worden geretourneerd als NUL alsof de gebruiker geen veld op uw formulier heeft ingevuld. Opmerking: ik kon deze methode niet goed laten werken.

Met Geldig(), u kunt functies registreren die bepalen of de opvulgegevens aan specifieke vereisten voldoen of een fout terugzenden of een foutmelding op een gebruikersformulier genereren.

Verkenner van de providers

Faker biedt een breed scala aan methoden voor het genereren van willekeurige gegevens voor uw toepassing:

  • Base: eenvoudige methoden voor willekeurige letters, cijfers, verwerkte reeksen en regex
  • Lorem Ipsum Tekst: willekeurige Latijnse tekst
  • Persoon: namen van mensen
  • Adres: postadressen
  • Telefoonnummer: telefoonnummers
  • Bedrijf: namen van bedrijven
  • Echte tekst: echte tekst geschreven door menselijke wezens versus betekenisloze Latijnse tekenreeksen
  • Datum en tijd: willekeurige datums en tijden
  • Internet: e-mails, domeinen, enz.
  • User Agent: browsestrings
  • Betaling: creditcard- en SWIFT-reeksen en -nummers
  • Kleur: willekeurige kleuren
  • Bestand: bestandsextensies, bestandstypes en bestandsnamen
  • Afbeelding: URL's van opvullende afbeeldingen van verschillende soorten
  • Uuid: unieke ID's
  • Streepjescode: verschillende barcodetypen, bijvoorbeeld ISBN13
  • Diversen: coderingscodes, landcodes, enz.
  • Voorspelling: willekeurige getallen met bias

Laten we met een paar van deze methoden experimenteren.

betalingsinformatie

De onderstaande code genereert tien mensen, hun creditcardgegevens en beveiligingscodes:

$ faker = Faker \ Factory :: create (); voor ($ i = 0; $ i<10;$i++)  $cc = $faker->creditcard details; $ Cc [ 'security'] = $ faker-> numberBetween (199.499); var_dump ($ cc); spacer (2); 

Hier is wat output van de bovenstaande code:

Afbeeldingen

Hier is een eenvoudig voorbeeld van het genereren van afbeeldingen:

$ faker = Faker \ Factory :: create (); $ Width = 320; $ Height = 240; echo ''; 

Maar je kunt ook katten genereren:

echo '';

Het is misschien het vermogen van de kat om me te winnen. Ik kan niet wachten op driedimensionale afdrukken en activering van de ziel om met dit soort dingen te werken.

Internationalized Data

Met de onderstaande code heb ik een tabel gemaakt met vier kolommen met namen uit Frankrijk, Rusland, Amerika en China:

echo '
Frans Russisch Engels Chinese
'; $ faker = Faker \ Factory :: create ('fr_FR'); // maak een Franse faker voor ($ i = 0; $ i < 10; $i++) echo $faker->naam; afstandhouder (); spacer (2); echo ''; $ faker = Faker \ Factory :: create ('Ru_RU'); // maak Russisch voor ($ i = 0; $ i < 10; $i++) echo $faker->naam; afstandhouder (); spacer (2); echo ''; $ faker = Faker \ Factory :: create ('En_US'); // maak Engels voor ($ i = 0; $ i < 10; $i++) echo $faker->naam; afstandhouder (); spacer (2); echo ''; $ faker = Faker \ Factory :: create ('zh_CN'); // Chinees maken voor ($ i = 0; $ i < 10; $i++) echo $faker->naam; afstandhouder (); echo '
';

Dit is de uitvoer:

Fake e-mailadressen aanmaken

Hier is voorbeeldcode om 25 valse e-mailadressen van gratis providers zoals Gmail en Yahoo te genereren:

$ values ​​= array (); voor ($ i = 0; $ i < 25; $i++)  // get a random digit, but also null sometimes $values []= $faker->freeEmail ();  print_r ($ waarden); Uitgang; 

Dit is de resulterende uitvoer:

XML-documenten genereren

Faker biedt een handig voorbeeld van het genereren van XML; het vereist echter dat je met een framework werkt en een view-architectuur hebt:

      boolean (25)):?>   
streetAddress?> stad?> postcode?> staat?>
boolean (33)):?> bs?> boolean (33)):?> boolean (15)):?>
tekst (400)?>]]>

Tot slot

Ik hoop dat dit een basisinleiding voor je is geweest voor Faker, een ongelooflijk nuttige gratis open-source PHP-bibliotheek.

Als je verder wilt lezen, beveel ik de Filler-inhoud van Jim Nielsen: Tools, Tips en een dynamisch voorbeeld (Envato Tuts +) aan, waarmee een ontwerper van een applicatie gegevens kan genereren. Hij suggereert dat je effectiever kunt zijn wanneer je valse gegevens toepast om een ​​meer realistische ervaring te creëren tijdens je ontwerpproces.

Als je wilt weten wanneer mijn volgende Envato Tuts + -handleiding aankomt, volg me @reifman op Twitter of bekijk mijn instructeurspagina. Momenteel werk ik aan twee series die u mogelijk op prijs stelt:

  1. Programmeren met de Yii2-serie
  2. Bouw je Startup met PHP over Meeting Planner; ga vandaag je eerste vergadering plannen.

Gerelateerde Links

  • fzaninotto / Faker (GitHub)
  • Filler-inhoud: hulpmiddelen, tips en een dynamisch voorbeeld (Envato Tuts +)
  • Programmeren met Yii2: automatisch testen met codering (Envato Tuts +)