Använda Faker för att generera fyllnadsdata för automatisk testning

Vad du ska skapa

Faker är ett open-source bibliotek skapat av Francois Zaninotto som genererar konstgjorda fyllnadsdata för din applikation och dess testbehov.

Faker kan användas i en vanilj PHP-applikation, ett ramverk som Yii eller Laravel, eller inom ett testbibliotek som vi hänvisade till med Codeception i denna tidigare Envato Tuts + handledning.

I dagens handledning granskar jag den grundläggande installationen och användningen av Faker och dess möjligheter. Som Zaninotto säger:

"Om du behöver starta upp din databas, skapa snygga XML-dokument, fyll i din persistens för att testa det eller anonymisera data som tagits från en produktionstjänst, är Faker för dig."

Och totalt sett levererar det ett brett utbud av enkla funktioner som är användbara för alla testregimer.

En liten påminnelse innan vi börjar, deltar jag i kommenterade trådar nedan. Jag är särskilt intresserad om du har ytterligare tankar eller vill föreslå ämnen för framtida handledning. Om du har en fråga eller ett ämne förslag, vänligen posta nedan. Du kan också nå mig på Twitter @ reifman direkt.

Komma igång

Installera Faker

Jag började med att skapa ett nytt kodträd och lägga till fzaninotto / faker till composer.json nedan:

"name": "Faker Demonstration", "description": "för Envato Tuts +", "nyckelord": ["faker", "php", "jeff reifman"], "hemsida": "http: // www. lookahead.io/ "," type ":" projekt "," licens ":" BSD-3-Clause "," minimumstabilitet ":" stabilt "," kräver ": " php ":"> = 5.6. 0 "," fzaninotto / faker ":" * " 

Sedan uppdaterade jag kompositör:

$ composer-uppdatering Laddar kompositarkataloger med paketinformation Uppdatering av beroenden (inklusive krav-dev) - Installera fzaninotto / faker (v1.6.0) Laddar från cache Skriva låsfil Generera autoload-filer 

Faker installeras i leverantörskatalogen. Så, då laddades jag överst på en index.php-fil:

Därefter ville jag prova några enkla exempel scenarier för att generera data.

Enkla exempel

Jag utvidgade Faker-exemplen enligt följande och sprang dem från http: // localhost: 8888 / faker:

namn; // "Lucy Cechtelar"; spacer (); echo $ faker-> adress; // "426 Jordy Lodge // Cartwrightshire, SC 88120-6700" spacer (); echo $ faker-> text; // Dolores sitter sint laboriosam dolorem culpa et autem. Beatae namnger sin fula // Fuga deserunt tempora facere magni omnis. Omnis quia temporibus laudantium // sitta minima sint. spacer (); funktion spacer () echo '
'; ?>

Med snabba uppdateringar presenterades jag med varierande resultat som:

Ruthie Beier 37851 Gusikowski Plattsvit 594 Port Keithmouth, NM 06110 Återupptas av suscipit sitt moderna arkitektoniska behov. Fel kan du göra när du vill. Quaerat mollitia dolore deserunt quia quidem beatae. 

Och:

Darron Hessel 657 Elijah Lås Suite 202 Nitzschemouth, AZ 11166 Culpa dolorum är ett distinkt och nödvändigt behov. Mollitia ut nostrum et ut quas veniam et. Unde iure molestiae aperiam fuga voluptatibus quo. 

Och:

Fredy Fadel MD 53328 Eldora Isle Apt. 634 West Eleanore, CA 95798-3025 Eligendi eos laudantium eveniet ad. Med en voluptatibus är det volymen. Dolorumpariatur quaerat nulla.

Faker levererar på sitt löfte.

Faker standardleverantörer

Alla datagenereringsmetoderna i Faker skapas från genomförandet av leverantörer. Här är koden som registrerar Faker standardleverantörer-det är gjort för dig:

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

Så ovan, när jag begärde en adress från Faker sökte det alla leverantörer för metoder som matchade, i slutändan att använda Adress() leverantör.

Du kan också skriva dina egna leverantörer eller bläddra i ett antal tillägg till Faker som finns tillgängliga på webben.

modifierare

Faker erbjuder även speciella modifierare som hjälper dig att testa, t.ex. unika (), valfria () eller giltiga (). Du kan till exempel generera unika nummer:

// unika () krafter leverantörer att returnera unika värden $ values ​​= array (); för ($ i = 0; $ i < 10; $i++)  // get a random digit, but always a new one, to avoid duplicates $values []= $faker->unika () -> randomDigit;  print_r ($ värden);

Här är resultatet av unika värden:

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

Om du använder valfri() metod kommer vissa nummer att returneras som NULL som om användaren inte angav ett fält på din blankett. Obs! Jag kunde inte få den här metoden att fungera korrekt.

Med giltig(), Du kan registrera funktioner som avgör om fyllnadsdatan uppfyller specifika krav eller skulle returnera ett fel eller skapa ett felmeddelande på användarformulär.

Utforska leverantörerna

Faker erbjuder en bred uppsättning metoder för att generera slumpmässiga data för din ansökan:

  • Bas: enkla metoder för slumpmässiga bokstäver, siffror, bearbetade strängar och regex
  • Lorem Ipsum Text: Slumpmässig Latintext
  • Person: namn på personer
  • Adress: postadresser
  • Telefonnummer: Telefonnummer
  • Företag: Namn på företag
  • Real Text: Egentlig text skrivet av människor vs. meningslösa latinska strängar
  • Datum och Tid: Slumpmässiga datum och tider
  • Internet: e-post, domäner etc..
  • Användaragent: webbläsarsträngar
  • Betalning: kreditkort och SWIFT-strängar och nummer
  • Färg: slumpmässiga färger
  • Fil: filtillägg, filtyper och filnamn
  • Bild: URL: er av fyllnadsbilder av olika slag
  • Uuid: unika ID-nummer
  • Streckkod: olika streckkodstyper, t.ex. ISBN13
  • Övrigt: Krypteringskoder, landskoder mm.
  • Biased: slumpmässiga tal med förspänning

Låt oss experimentera med några fler av dessa metoder.

Betalningsinformation

Koden nedan genererar tio personer, deras kreditkortsuppgifter och säkerhetskoder:

$ faker = Faker \ Factory :: skapa (); för ($ i = 0; $ i<10;$i++)  $cc = $faker->credit; $ Cc [ 'säkerhet'] = $ FÅKER-> numberBetween (199.499); var_dump ($ cc); distans (2); 

Här är några resultat från ovanstående kod:

Bilder

Här är ett enkelt exempel på bildgenerering:

$ faker = Faker \ Factory :: skapa (); $ Width = 320; $ Height = 240; eko "'; 

Men du kan också skapa katter:

eko "';

Det kan vara kattgenereringskapaciteten som vann mig över. Jag kan inte vänta på tredimensionell utskrift och själaktivering för att arbeta med saker som detta.

Internationaliserade data

Med koden nedan skapade jag ett bord med fyra kolumner med namn från Frankrike, Ryssland, Amerika och Kina:

eko "
franska ryska engelsk kinesisk
'; $ faker = Faker \ Factory :: skapa ('fr_FR'); // skapa en fransk faker för ($ i = 0; $ i < 10; $i++) echo $faker->namn; spacer (); distansorganet (2); eko "'; $ faker = Faker \ Factory :: skapa ('Ru_RU'); // skapa ryska för ($ i = 0; $ i < 10; $i++) echo $faker->namn; spacer (); distansorganet (2); eko "'; $ faker = Faker \ Factory :: skapa ('En_US'); // skapa engelska för ($ i = 0; $ i < 10; $i++) echo $faker->namn; spacer (); distansorganet (2); eko "'; $ faker = Faker \ Factory :: skapa ('zh_CN'); // skapa kinesiska för ($ i = 0; $ i < 10; $i++) echo $faker->namn; spacer (); eko
';

Här är utgången:

Skapa falska e-postadresser

Här är exempelkod för att generera 25 falska e-postadresser från gratis leverantörer som Gmail och Yahoo:

$ värden = array (); för ($ i = 0; $ i < 25; $i++)  // get a random digit, but also null sometimes $values []= $faker->freeEmail ();  print_r ($ värden); utgång; 

Här är den resulterande produktionen:

Generera XML-dokument

Faker erbjuder ett bra exempel på att generera XML; Det kräver dock att du arbetar med ett ramverk och har en arkitektur:

      booleska (25)):?>   
streetAddress?> stad?> postnummer?> state?>
booleska (33)):?> bs?> booleska (33)):?> booleska (15)):?>
text (400)?>]]>

Sammanfattningsvis

Jag hoppas att detta har fungerat som en grundläggande introduktion för dig till Faker, ett otroligt användbart gratis, open-source PHP-bibliotek.

Om du vill läsa mer, rekommenderar jag Jim Nielsens fyllnadsinnehåll: Verktyg, tips och ett dynamiskt exempel (Envato Tuts +), vilket ger en applikationsdesigners uppgift att generera data. Han föreslår att du kan vara effektivare när du tillämpar falska data för att skapa en mer realistisk upplevelse under din designprocess.

Om du vill veta när min nästa Envato Tuts + handledning kommer, följ mig @ reifman på Twitter eller kolla min instruktörssida. För närvarande arbetar jag med två serier som du kan uppskatta:

  1. Programmering med Yii2-serien
  2. Bygg din start med PHP om mötesplaneraren; planera ditt första möte där idag.

relaterade länkar

  • fzaninotto / Faker (GitHub)
  • Fyllnadsinnehåll: Verktyg, tips och ett dynamiskt exempel (Envato Tuts +)
  • Programmering med Yii2: Automatiserad testning med koduppsättning (Envato Tuts +)