Test-Daten generieren mit Faker

Falls man für Tests oder eine Daten-Analyse eine größere Anzahl an Daten benötigt, kann man bestimte Daten mit dem Modul Faker erzeugen.
Die ausführliche Beschreibung, welche Daten man erzeugen kann, und wie Faker im Einzelnen funktioniert, findet man in der offiziellen Dokumentation.

Gibt man keine Localization an, dann werden Daten im US-Format erstellt. Jede Localization bietet unterschiedliche Felder bzw. Datenkonstrukte an, so dass man in der Anleitung nachzuschauen hat, welche Möglichkeiten jeweils angeboten werden.

Hier im Beispiel werden US-, DE- und AT-Daten erstellt. Dabei zeigt sich, dass für AT z.B. keine deutsche Job-Beschreibung ausgegeben wird, sondern die englische Standard-Ausgabe. Genauso gibt es für US-Daten keine IBAN, so dass hier eine EU-Nummer erzeugt wird.

Anstelle einzelne Felder zu erzeugen, gibt es auch die Möglichkeit ein Profil bzw. „simple profile“ zu erstellen. Man erhält dann ein Dictionary mit mehreren Datenfeldern. Allerdings passen auch dann nicht zwingend z.B. Name, Username und Email-Adresse sinnvoll zusammen.
Es besteht also kein logischer Zusammenhang zwischen den Daten, es geht hier nur darum, eine entsprechende Menge an Daten zu erzeugen. Benötigt man Daten, die in gewisser Weise logisch zusammenpassen, dann ist bei der Generierung „manuell“ einzugreifen, und die Daten sind im Nachhinein anzupassen.

Beispiel-Skript:

from pprint import pprint
from faker import Faker

def get_data(data_generator):
    print()
    print(data_generator.name())
    print(data_generator.address())
    print(data_generator.administrative_unit())
    print(data_generator.current_country())
    print(data_generator.phone_number())
    print(data_generator.ascii_free_email())
    print(data_generator.job())
    print(data_generator.license_plate())
    print(data_generator.iban())
    print()
    pprint(data_generator.profile())
    print()
    pprint(data_generator.simple_profile())
    print()

print("US-Ausgabe")
fake = Faker()

for _ in range(3):
    get_data(fake)

print("DE-Ausgabe")
fake = Faker('de_DE')

for _ in range(3):
    get_data(fake)

print("AT-Ausgabe")
fake = Faker('de_AT')

for _ in range(3):
    get_data(fake)

Beispiel-Ausgabe für drei Durchläufe (jeweils Standard, DE, AT):

US-Ausgabe

James Singleton
PSC 7245, Box 7294
APO AP 28464
Alaska
United States
0452029668
jonathan62@yahoo.com
Estate manager/land agent
3JY04
GB61RVLF91001200330354

{'address': '93776 Adkins Heights Suite 784\nLake Alexanderburgh, FL 29152',
 'birthdate': datetime.date(1978, 10, 19),
 'blood_group': 'AB+',
 'company': 'Henderson Group',
 'current_location': (Decimal('51.831340'), Decimal('3.182738')),
 'job': 'Microbiologist',
 'mail': 'william07@gmail.com',
 'name': 'Joseph Ellis',
 'residence': '1038 Clark Pass\nThompsontown, MD 70971',
 'sex': 'M',
 'ssn': '245-16-1620',
 'username': 'owebb',
 'website': ['http://watson.com/',
             'http://strong.com/',
             'http://guzman.com/',
             'https://boone.info/']}

{'address': '97300 Craig Point Suite 536\nNorth Becky, AZ 09416',
 'birthdate': datetime.date(2013, 1, 10),
 'mail': 'james65@hotmail.com',
 'name': 'Lawrence Price',
 'sex': 'M',
 'username': 'iramirez'}


Jill Ochoa
USNS Rodriguez
FPO AA 20851
Florida
United States
+1-093-031-4657x99343
danielle55@hotmail.com
Fisheries officer
3EQ6685
GB79KGCT41691782951514

{'address': '0610 Hayes Bridge Suite 100\nNorth Zachary, MI 89220',
 'birthdate': datetime.date(1949, 3, 29),
 'blood_group': 'O-',
 'company': 'Kennedy Group',
 'current_location': (Decimal('57.497092'), Decimal('-70.777497')),
 'job': 'Medical secretary',
 'mail': 'jenkinschristopher@gmail.com',
 'name': 'Kelli Lopez',
 'residence': '13951 Daniel Courts Suite 496\nWest Eric, WA 66077',
 'sex': 'F',
 'ssn': '511-65-0395',
 'username': 'jamesblanchard',
 'website': ['http://newman.com/',
             'http://mason.com/',
             'https://quinn.org/',
             'https://www.snyder-patterson.com/']}

{'address': '099 Gina Turnpike Apt. 681\nMeganside, NV 99540',
 'birthdate': datetime.date(1949, 2, 14),
 'mail': 'chrismatthews@gmail.com',
 'name': 'Christopher Holland',
 'sex': 'M',
 'username': 'tinacombs'}


Sara Johnson
40548 Mason River Apt. 273
North Connorborough, AK 17906
Georgia
United States
2170710195
hollandjamie@gmail.com
Editor, magazine features
8-63163D
GB46ZVYF57920560424992

{'address': '9704 Dawn Orchard Apt. 403\nDonaldport, CA 83787',
 'birthdate': datetime.date(1927, 12, 24),
 'blood_group': 'A-',
 'company': 'Taylor Ltd',
 'current_location': (Decimal('-60.6126125'), Decimal('-62.992604')),
 'job': 'Maintenance engineer',
 'mail': 'larryweeks@gmail.com',
 'name': 'Amy Burnett',
 'residence': '79699 Angela Inlet Suite 317\nCoxmouth, VA 99311',
 'sex': 'F',
 'ssn': '349-66-6534',
 'username': 'rivasangela',
 'website': ['https://www.douglas-roach.org/',
             'https://shaw.biz/',
             'http://walker.info/']}

{'address': '727 Melissa Cliff Apt. 972\nWest Mariatown, GU 57750',
 'birthdate': datetime.date(1911, 7, 26),
 'mail': 'patriciakirk@hotmail.com',
 'name': 'Megan Rios',
 'sex': 'F',
 'username': 'weaverbrian'}

DE-Ausgabe

Dr. Lilija Zimmer
Rupert-Meyer-Allee 667
05466 Torgau
Nordrhein-Westfalen
Germany
(06265) 539469
helmakrause@yahoo.de
Schornsteinfeger
UM-A-5191
DE46241124659400265401

{'address': 'Angelika-Faust-Allee 259\n69576 Badibling',
 'birthdate': datetime.date(1939, 11, 27),
 'blood_group': 'AB-',
 'company': 'Ortmann Budig GbR',
 'current_location': (Decimal('-6.615461'), Decimal('-85.326145')),
 'job': 'Drogist',
 'mail': 'catharina31@hotmail.de',
 'name': 'Kirsten Ullmann',
 'residence': 'Lehmannring 7/8\n54717 Diepholz',
 'sex': 'F',
 'ssn': '995-19-2259',
 'username': 'fmeyer',
 'website': ['https://www.heinz.com/',
             'http://www.jungfer.de/',
             'https://hess.org/',
             'https://heuser.com/']}

{'address': 'Margrit-Trapp-Allee 7\n75522 Reutlingen',
 'birthdate': datetime.date(1926, 2, 15),
 'mail': 'kuhlheinz-werner@googlemail.com',
 'name': 'Ilja Scholtz MBA.',
 'sex': 'M',
 'username': 'silvester61'}


Henny Bolander
Ekrem-Stroh-Straße 551
04721 Stade
Hessen
Germany
0280179797
agute@yahoo.de
Bäcker
GER-FG-274
DE91667947583717012638

{'address': 'Marie-Conradi-Allee 1\n27230 Bautzen',
 'birthdate': datetime.date(1987, 11, 8),
 'blood_group': 'O+',
 'company': 'Stoll',
 'current_location': (Decimal('70.929016'), Decimal('-134.649135')),
 'job': 'Chemikant',
 'mail': 'zita35@web.de',
 'name': 'Prof. Karl Drub',
 'residence': 'Weihmannallee 43\n78729 Badalzungen',
 'sex': 'M',
 'ssn': '689-75-2179',
 'username': 'lkoester',
 'website': ['https://schmiedecke.de/',
             'https://www.wende.com/',
             'http://www.bloch.com/',
             'http://saeuberlich.com/']}

{'address': 'Undine-Atzler-Platz 1/7\n32952 Meiningen',
 'birthdate': datetime.date(1925, 11, 3),
 'mail': 'lotharbachmann@gmail.com',
 'name': 'Ferenc Hoffmann',
 'sex': 'M',
 'username': 'jacobaustermuehle'}


Univ.Prof. Irmtrud Noack B.A.
Ringgasse 70
02364 Peine
Nordrhein-Westfalen
Germany
+49(0)3041288300
rita53@gmail.com
Drogist
BA-TN-92
DE04760824961676391745

{'address': 'Eberhardtstraße 5/0\n99169 Burgdorf',
 'birthdate': datetime.date(1946, 10, 22),
 'blood_group': 'O-',
 'company': 'Schottin Stiffel AG',
 'current_location': (Decimal('-12.6875315'), Decimal('114.708994')),
 'job': 'Arzt',
 'mail': 'kditschlerin@hotmail.de',
 'name': 'Luigi Schottin',
 'residence': 'Jörn-Cichorius-Straße 517\n85218 Potsdam',
 'sex': 'M',
 'ssn': '743-73-3152',
 'username': 'maxgroettner',
 'website': ['https://roht.org/',
             'http://nette.de/',
             'http://ladeck.de/',
             'https://gude.de/']}

{'address': 'Evelin-Jüttner-Gasse 604\n90705 Kronach',
 'birthdate': datetime.date(1988, 10, 13),
 'mail': 'oskar88@googlemail.com',
 'name': 'Hermann-Josef Sager B.A.',
 'sex': 'M',
 'username': 'giessdetlef'}

AT-Ausgabe

Nikita Lercher-Dittrich
Leoni-Aschauer-Ring 820
6796 Ferlach
Salzburg
Austria
001-715-321-7891
jkolm@gmail.com
Microbiologist
YRU 579
AT665777860120123133

{'address': 'Feichtnerstr. 212\n3669 Sankt Andrä im Lavanttal',
 'birthdate': datetime.date(2007, 6, 22),
 'blood_group': 'A+',
 'company': 'Ebner Inc',
 'current_location': (Decimal('1.632963'), Decimal('52.998748')),
 'job': 'Charity officer',
 'mail': 'finkkalina@chello.at',
 'name': 'Mike Ender',
 'residence': 'Koppplatz 0/6\n7036 Zistersdorf',
 'sex': 'M',
 'ssn': '168-39-0256',
 'username': 'raphaelrainer',
 'website': ['http://erhart.com/']}

{'address': 'Lamplstraße 71\n9685 Wolkersdorf',
 'birthdate': datetime.date(2011, 3, 25),
 'mail': 'lilian34@gmx.at',
 'name': 'Oliver Steinlechner',
 'sex': 'M',
 'username': 'elma30'}


Marcus Pointner-Mühlböck
Kevin-Kreidl-Straße 00
3791 Groß-Enzersdorf
Kärnten
Austria
001-943-531-8390x626
lbaier@gmx.at
Engineer, electrical
894J6
AT856265554767119262

{'address': 'Feichtergasse 95\n5562 Marchtrenk',
 'birthdate': datetime.date(2014, 10, 24),
 'blood_group': 'B+',
 'company': 'Langer, Karl and Hofinger',
 'current_location': (Decimal('-89.586332'), Decimal('-169.134470')),
 'job': 'Architectural technologist',
 'mail': 'pscherzer@gmail.com',
 'name': 'Kristina Kerschbaumer',
 'residence': 'Klara-Hackl-Platz 2\n1497 Bruck an der Leitha',
 'sex': 'F',
 'ssn': '036-23-7704',
 'username': 'hoellercristina',
 'website': ['http://zettl-farkas.net/',
             'http://www.ernst.at/',
             'https://www.frick.net/',
             'https://lindorfer.net/']}

{'address': 'Stockhammerplatz 267\n9651 Braunau am Inn',
 'birthdate': datetime.date(1941, 4, 9),
 'mail': 'elenalindorfer@gmail.com',
 'name': 'Ing. Lena Macher',
 'sex': 'F',
 'username': 'anna-marialampl'}


Frau Selma Payer
Jovana-Bürger-Gasse 53
1335 Langenlois
Vorarlberg
Austria
093.229.0038x3413
stockerheinrich@chello.at
Engineer, chemical
970 HXQ
AT916918197120814511

{'address': 'Klementstr. 242\n1931 Gmunden',
 'birthdate': datetime.date(1973, 9, 4),
 'blood_group': 'O+',
 'company': 'Thaler Group',
 'current_location': (Decimal('-53.1931475'), Decimal('113.164752')),
 'job': 'Production assistant, radio',
 'mail': 'nreinthaler@gmail.com',
 'name': 'Miriam Rieser',
 'residence': 'Seiserstraße 4/5\n1795 Bärnbach',
 'sex': 'F',
 'ssn': '318-44-9894',
 'username': 'kaefergabriela',
 'website': ['https://www.wiesner-harrer.com/']}

{'address': 'Mariella-Reischl-Straße 334\n1735 Neumarkt am Wallersee',
 'birthdate': datetime.date(1976, 6, 7),
 'mail': 'sabinekriegl@chello.at',
 'name': 'Frau Lina Schwaiger',
 'sex': 'F',
 'username': 'gratzerangelina'}