Bruke Faker til å generere fylldata for automatisk testing

Hva du skal skape

Faker er et åpen kildebibliotek opprettet av Francois Zaninotto som genererer kunstige fyllingsdata for din søknad og dens testbehov.

Faker kan brukes i en vanilje PHP-applikasjon, et rammeverk som Yii eller Laravel, eller i et testbibliotek som vi fortalte med Codeception i denne tidligere Envato Tuts + opplæringen.

I dagens veiledning vurderer jeg grunnleggende installasjon og bruk av Faker og dens evner. Som Zaninotto sier:

"Uansett om du trenger å starte opp databasen, opprette flotte XML-dokumenter, fyll ut din utholdenhet til å teste det, eller anonymisere data hentet fra en produksjonstjeneste, er Faker for deg."

Og samlet gir den et bredt spekter av enkle egenskaper som er nyttige for alle testregimer.

En liten påminnelse før vi kommer i gang, deltar jeg i kommentertrådene nedenfor. Jeg er spesielt interessert hvis du har flere tanker eller vil foreslå emner for fremtidige opplæringsprogrammer. Hvis du har et spørsmål eller et emneforslag, vennligst legg inn under. Du kan også nå meg på Twitter @ reifman direkte.

Starter

Installere Faker

Jeg begynte med å lage et nytt kode tre og legge til fzaninotto / faker til komponist.json nedenfor:

"navn": "Faker Demonstration", "beskrivelse": "for Envato Tuts +", "søkeord": ["faker", "php", "jeff reifman"], "hjemmeside": "http: // www. lookahead.io/ "," type ":" prosjekt "," lisens ":" BSD-3-Clause "," minimumsstabilitet ":" stabilt "," krever ": " php ":"> = 5.6. 0 "," fzaninotto / faker ":" * " 

Så oppdaterte jeg komponist:

$ komponentoppdatering Laster inn kompositorbeholdninger med pakkedata Oppdatere avhengigheter (inkludert krav-dev) - Installere fzaninotto / faker (v1.6.0) Laster fra cache Skrive låsfil Generere autoload-filer 

Faker er installert i leverandørkatalogen. Så da lastet jeg øverst på en index.php-fil:

Deretter ønsket jeg å prøve noen enkle eksempel scenarier for å generere data.

Enkle eksempler

Jeg utvidet Faker-eksemplene som følger, og kjørte dem fra http: // localhost: 8888 / faker:

Navn; // 'Lucy Cechtelar'; avstandsstykke (); ekko $ faker-> adresse; // "426 Jordy Lodge // Cartwrightshire, SC 88120-6700" spacer (); ekko $ faker-> tekst; // Dolores er sint laboriosam dolorem culpa et autem. Beatae tok en skikkelig følelse. // Fuga deserunt tempora facere magni omnis. Omnis quia temporibus laudantium // sit minima sint. avstandsstykke (); funksjon spacer () echo '
'; ?>

Med rask oppdatering ble jeg presentert med varierende resultater som:

Ruthie Beier 37851 Gusikowski Flat Suite 594 Port Keithmouth, NM 06110 Tilbakestill eos suscipit er moderne arkitektonisk nødvendighet. Feil på maiores qui vero non omnis. Quaerat mollitia dolore deserunt quia quidem beatae. 

Og:

Darron Hessel 657 Elijah Lock Suite 202 Nitzschemouth, AZ 11166 Culpa dolorum er et utmerket valg for deg. Mollitia ut nostrum et ut quas veniam et. Unde iure molestiae aperiam fuga voluptatibus quo. 

Og:

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

Faker leverer på sitt løfte.

Faker er standardleverandører

Alle datagenereringsmetodene i Faker er opprettet fra implementering av leverandører. Her er koden som registrerer Faker standardleverandører-det er gjort for deg:

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

Så over, da jeg ba om en adresse fra Faker, søkte det alle tilbydere for metoder som matchet, til slutt å bruke Adresse() forsørger.

Du kan også skrive dine egne leverandører eller bla gjennom en rekke utvidelser til Faker som er tilgjengelige på nettet.

modifikatorer

Faker tilbyr også spesielle modifikatorer for å hjelpe testen din, for eksempel unike (), valgfrie () eller gyldige (). For eksempel kan du generere unike tall:

// unike () krefter leverandører å returnere unike verdier $ values ​​= array (); for ($ i = 0; $ i < 10; $i++)  // get a random digit, but always a new one, to avoid duplicates $values []= $faker->unik () -> randomDigit;  print_r ($ verdier);

Her er resultatet av unike verdier:

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

Hvis du bruker valgfri() metode, noen tall vil bli returnert som NULL som om brukeren ikke skrev inn et felt på skjemaet ditt. Merk: Jeg kunne ikke få denne metoden til å fungere skikkelig.

Med gyldig(), Du kan registrere funksjoner som bestemmer om fyllnadsdataene oppfyller spesifikke krav eller vil returnere en feil eller generere en feilmelding på et brukerskjema.

Utforske leverandørene

Faker tilbyr et bredt sett med metoder for å generere tilfeldige data for din søknad:

  • Base: enkle metoder for tilfeldige bokstaver, tall, behandlede strenger og regex
  • Lorem Ipsum Tekst: tilfeldig latin tekst
  • Person: navn på personer
  • Adresse: postadresser
  • Telefonnummer: telefonnumre
  • Firma: navn på selskaper
  • Real Text: faktisk tekst skrevet av mennesker vs. meningsløse latinske strenge
  • Dato og klokkeslett: tilfeldige datoer og klokkeslett
  • Internett: e-post, domener osv.
  • Brukeragent: nettleserstrenger
  • Betaling: kredittkort og SWIFT-strenge og tall
  • Farge: tilfeldige farger
  • Fil: filutvidelser, filtyper og filnavn
  • Bilde: Nettadresser til fillerbilder av forskjellige slag
  • Uuid: unike IDer
  • Strekkode: forskjellige strekkode typer, f.eks. ISBN13
  • Diverse: krypteringskoder, landskoder osv.
  • Forsinket: tilfeldige tall med forspenning

La oss eksperimentere med noen flere av disse metodene.

Betalingsinformasjon

Koden nedenfor genererer ti personer, deres kredittkortinformasjon og sikkerhetskoder:

$ faker = Faker \ Factory :: create (); for ($ i = 0; $ i<10;$i++)  $cc = $faker->creditCardDetails; $ Cc [ 'sikkerhet'] = $ faker-> numberBetween (199,499); var_dump ($ cc); spacer (2); 

Her er noen utdata fra koden ovenfor:

Bilder

Her er et enkelt eksempel på bildegenerering:

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

Men du kan også generere katter:

ekko '';

Det kan være kattegenereringskapasiteten som vant meg over. Jeg kan ikke vente på tredimensjonal utskrift og sjelaktivering for å jobbe med ting som dette.

Internationaliserte data

Med koden nedenfor opprettet jeg et bord med fire kolonner med navn fra Frankrike, Russland, Amerika og Kina:

ekko '
fransk russisk Engelsk kinesisk
'; $ faker = Faker \ Factory :: create ('fr_FR'); // lage en fransk faker for ($ i = 0; $ i < 10; $i++) echo $faker->Navn; avstandsstykke (); spacer (2); ekko ''; $ faker = Faker \ Factory :: create ('Ru_RU'); // opprett russisk for ($ i = 0; $ i < 10; $i++) echo $faker->Navn; avstandsstykke (); spacer (2); ekko ''; $ faker = Faker \ Factory :: create ('En_US'); // lage engelsk for ($ i = 0; $ i < 10; $i++) echo $faker->Navn; avstandsstykke (); spacer (2); ekko ''; $ faker = Faker \ Factory :: create ('zh_CN'); // lage kinesisk for ($ i = 0; $ i < 10; $i++) echo $faker->Navn; avstandsstykke (); ekko '
';

Her er utgangen:

Opprette falske e-postadresser

Her er eksempelkode for å generere 25 falske e-postadresser fra gratis tilbydere som Gmail og Yahoo:

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

Her er resultatet:

Genererer XML-dokumenter

Faker tilbyr et nyttig eksempel på å generere XML; Det krever imidlertid at du jobber med et rammeverk og har en visningsarkitektur:

      booleske (25)):?>   
streetAddress?> by?> postnummer?> state?>
boolsk (33)):?> bs?> boolsk (33)):?> booleske (15)):?>
tekst (400)?>]]>

For å konkludere

Jeg håper at dette har fungert som en grunnleggende introduksjon for deg til Faker, et utrolig nyttig gratis, åpen kildekode-PHP-bibliotek.

Hvis du vil lese videre, anbefaler jeg Jim Nielsens Filler Content: Verktøy, tips og et dynamisk eksempel (Envato Tuts +), som gir en applikasjonsdesigners ta på seg generering av data. Han foreslår at du kan være mer effektiv når du bruker falske data for å skape en mer realistisk opplevelse under designprosessen.

Hvis du vil vite når min neste Envato Tuts + opplæring kommer, følg meg @ reifman på Twitter eller sjekk min instruktørside. For tiden jobber jeg med to serier du kan sette pris på:

  1. Programmering med Yii2-serien
  2. Bygg opp oppstart med PHP om møteplanlegger; planlegg ditt første møte der i dag.

Relaterte linker

  • fzaninotto / Faker (GitHub)
  • Filler innhold: Verktøy, tips og et dynamisk eksempel (Envato Tuts +)
  • Programmering Med Yii2: Automatisert Testing Med Codeception (Envato Tuts +)