faker
¶Faker is a Python package that generates fake data for you. Whether you need to bootstrap your database, create good-looking XML documents, fill-in your persistence to stress test it, or anonymize data taken from a production service, Faker is for you.
Faker is heavily inspired by PHP’s Faker, Perl’s Data::Faker, and by ruby’s Faker.
Use fake.Factory.create()
to create and initialize a faker generator, which can generate data by accessing properties named after the type of data you want.:
from faker import Factory
fake = Factory.create()
# OR
from faker import Faker
fake = Faker()
fake.name()
# 'Lucy Cechtelar'
fake.address()
# "426 Jordy Lodge
# Cartwrightshire, SC 88120-6700"
fake.text()
# Sint velit eveniet. Rerum atque repellat voluptatem quia rerum. Numquam excepturi
# beatae sint laudantium consequatur. Magni occaecati itaque sint et sit tempore. Nesciunt
# amet quidem. Iusto deleniti cum autem ad quia aperiam.
# A consectetur quos aliquam. In iste aliquid et aut similique suscipit. Consequatur qui
# quaerat iste minus hic expedita. Consequuntur error magni et laboriosam. Aut aspernatur
# voluptatem sit aliquam. Dolores voluptatum est.
# Aut molestias et maxime. Fugit autem facilis quos vero. Eius quibusdam possimus est.
# Ea quaerat et quisquam. Deleniti sunt quam. Adipisci consequatur id in occaecati.
# Et sint et. Ut ducimus quod nemo ab voluptatum.
Each call to method fake.name()
yealds a different (random) result.
This is because faker forwards faker.Genarator.method_name()
calls to faker.Generator.format(method_name)
.:
for i in range(0,10):
print fake.name()
# Adaline Reichel
# Dr. Santa Prosacco DVM
# Noemy Vandervort V
# Lexi O'Conner
# Gracie Weber
# Roscoe Johns
# Emmett Lebsack
# Keegan Thiel
# Wellington Koelpin II
# Ms. Karley Kiehn V
Each of the generator properties (like name
, address
, and lorem
) are called “formatters”.
A faker generator has many of them, packaged in “providers”. Here is a list of the bundled formatters in the default locale.
fake.random_digit_not_null() # 1
fake.randomize_nb_elements(number=10, le=False, ge=False) # 13
fake.random_letter() # S
fake.random_digit() # 6
fake.bothify(text="## ??") # 05 Gm
fake.random_element(array=('a', 'b', 'b')) # b
fake.random_number(digits=None) # 38
fake.lexify(text="????") # gJPH
fake.random_int(min=0, max=9999) # 2355
fake.numerify(text="###") # 646
fake.text(max_nb_chars=200) # Quam quibusdam iusto commodi velit. Earum voluptatibus officiis suscipit. Sed
ut nesciunt iste.
fake.sentence(nb_words=6, variable_nb_words=True) # Ut beatae distinctio aliquid placeat mollitia.
fake.word() # rem
fake.paragraphs(nb=3) # [u'Aliquid repellat dolores sed autem et. Voluptatem nisi sint quae aut autem
cupiditate. Delectus ullam nemo tempore et ab aut fuga molestias.', u'Blandi
tiis sint enim id est nostrum aliquid molestiae. Eius sint tempore autem atqu
e consequatur assumenda. Et voluptatem sunt fugiat sunt et.', u'Voluptate lab
orum maiores veniam saepe. Beatae ipsam quam nihil qui qui asperiores. Enim c
ulpa laudantium temporibus quibusdam aliquid. Corporis ut nostrum voluptate e
t sit tempore.']
fake.words(nb=3) # [u'consectetur', u'est', u'rerum']
fake.paragraph(nb_sentences=3, variable_nb_sentences=True) # Perferendis placeat dolores exercitationem quae ducimus. Magnam debitis eum e
xcepturi at quidem qui. Animi ad cupiditate in.
fake.sentences(nb=3) # [u'Accusantium molestiae ut exercitationem voluptatem.', u'Fuga consequatur c
onsequuntur quam molestiae nam.', u'Dolor omnis hic perferendis aut itaque si
t.']
fake.state_abbr() # ID
fake.latitude() # 176.060836
fake.street_name() # Bernadine Vista
fake.address() # 59802 Kohler Gateway
Keeblertown, CA 89092
fake.street_address() # 39719 Klein Mews
fake.postcode() # 97628
fake.longitude() # -80.950377
fake.country() # Palau
fake.geo_coordinate() # 8.572122
fake.street_suffix() # Corners
fake.city_prefix() # West
fake.city_suffix() # burgh
fake.building_number() # 26481
fake.secondary_address() # Apt. 399
fake.city() # East Noemie
fake.state() # Kansas
fake.name() # Deborah Johnston
fake.suffix() # I
fake.last_name() # Cummings
fake.first_name() # Violet
fake.prefix() # Miss
fake.date_time_ad() # 0335-11-13 23:08:35
fake.month() # 11
fake.am_pm() # PM
fake.iso8601() # 1988-03-30T13:39:34
fake.date_time_this_century() # 1930-10-08 21:49:52
fake.date_time() # 1997-03-13 02:03:24
fake.month_name() # June
fake.date_time_this_month() # 2013-11-04 18:41:20
fake.date_time_this_decade() # 2010-12-11 02:32:12
fake.day_of_week() # Wednesday
fake.day_of_month() # 16
fake.time(pattern="%H:%M:%S") # 11:30:21
fake.date_time_between(start_date="-30y", end_date="now") # 2002-10-11 14:57:38
fake.unix_time() # 763964108
fake.date_time_this_year() # 2012-12-11 07:09:57
fake.timezone() # Europe/Zurich
fake.century() # XVII
fake.date(pattern="%Y-%m-%d") # 1982-04-26
fake.year() # 2000
fake.company() # Funk and Sons
fake.company_suffix() # and Sons
fake.catch_phrase() # Triple-buffered executive focusgroup
fake.bs() # brand proactive communities
fake.ipv4() # 131.175.254.102
fake.url() # http://www.bernier.com/
fake.company_email() # barrows.brandyn@altenwerth.org
fake.uri() # http://www.murray.net/about.html
fake.tld() # info
fake.uri_path(deep=None) # search/main
fake.free_email() # gmccullough@gmail.com
fake.user_name() # wiza.johnathon
fake.free_email_domain() # hotmail.com
fake.domain_name() # mertz.com
fake.uri_extension() # .jsp
fake.ipv6() # 6a67:a71f:ec3c:f641:177f:f33f:fb11:e27b
fake.safe_email() # greinger@example.org
fake.uri_page() # login
fake.email() # dorcas53@hotmail.com
fake.domain_word() # bahringer
fake.slug(value=None) # maxime-ea-omnis
fake.locale() # cn_TJ
fake.md5(raw_output=False) # 98063a4419ebc124a94a0fe9411d95ba
fake.sha1(raw_output=False) # 910aa38699b69228fee09ca0f2fb6e65f987ebd4
fake.null_boolean() # False
fake.sha256(raw_output=False) # 0aed69e82a0abfa4c03dcf17e212c5b0ac08f12751b1acac96553c1abc3352b5
fake.country_code() # TG
fake.language_code() # pt
fake.boolean(chance_of_getting_true=50) # True
fake.phone_number() # +94(1)6262568403
fake.mac_processor() # U; Intel
fake.firefox() # Mozilla/5.0 (X11; Linux i686; rv:1.9.6.20) Gecko/2012-01-08 15:31:21 Firefox/
3.8
fake.linux_platform_token() # X11; Linux x86_64
fake.opera() # Opera/8.46.(Windows NT 5.2; it-IT) Presto/2.9.161 Version/11.00
fake.windows_platform_token() # Windows 95
fake.internet_explorer() # Mozilla/5.0 (compatible; MSIE 5.0; Windows NT 6.1; Trident/3.1)
fake.user_agent() # Mozilla/5.0 (X11; Linux i686; rv:1.9.6.20) Gecko/2010-12-19 10:41:34 Firefox/
3.6.17
fake.chrome() # Mozilla/5.0 (Windows 98) AppleWebKit/5332 (KHTML, like Gecko) Chrome/15.0.849
.0 Safari/5332
fake.linux_processor() # i686
fake.mac_platform_token() # Macintosh; U; Intel Mac OS X 10_7_4
fake.safari() # Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_8_3 rv:2.0; it-IT) AppleWebKit/532
.47.1 (KHTML, like Gecko) Version/5.0.5 Safari/532.47.1
fake.mime_type(category=None) # video/mpeg
fake.pyiterable(nb_elements=10, variable_nb_elements=True, *value_types) # set([Decimal('7.2022029784E+11'), Decimal('7.80290776173E+12'), u'Dolor imped
it quia.', 3014507.7827, u'ramiro.carter@schumm.org', 4443, u'Sed iusto magna
m.'])
fake.pystr(max_chars=20) # Nulla odit ex fuga.
fake.pyfloat(left_digits=None, right_digits=None, positive=False) # 69950445.94
fake.pystruct(count=10, *value_types) # ([u'Corporis excepturi.', -6.3746979, 8874, 641.670735144, u'Dolores ut aut v
el.', u'Non cumque.', datetime(1988, 1, 10, 18, 20, 26), u'http://cronin.info
/search/category/search.htm', -543720939267106.0, u'Est dignissimos et.'], {u
'neque': datetime(2002, 10, 12, 1, 41, 44), u'sit': u'Et sed ut nisi.', u'arc
hitecto': u'Minus sunt quos.', u'numquam': u'Officiis in.', u'esse': Decimal(
'851592439.65'), u'ex': 55651.0, u'praesentium': u'Beatae excepturi.', u'dolo
rem': Decimal('-3.49169242935E+13'), u'vel': u'Exercitationem.', u'quo': date
time(2003, 2, 7, 2, 16, 28)}, {u'consequuntur': {9: u'Eaque quis autem.', 10:
[-922275532.2, u'Incidunt aut.', u'Et sint excepturi.'], 11: {9: datetime(19
77, 9, 27, 4, 49, 32), 10: u'Est sunt.', 11: [u'victoria.blick@littel.info',
u'Quos aut quo.']}}, u'non': {2: 6716, 3: [29014.550976, u'Praesentium.', 870
4], 4: {2: 3649, 3: datetime(1979, 11, 8, 9, 59, 37), 4: [u'http://langworthr
osenbaum.org/register/', Decimal('62790.0')]}}, u'est': {5: u'Maxime incidunt
.', 6: [-9.5832, u'http://www.nitzsche.biz/search/search/author.htm', u'Cum s
uscipit dolor.'], 7: {5: u'Consequuntur autem.', 6: 1684, 7: [u'http://rath.c
om/posts/homepage/', u'Ea sit error.']}}, u'voluptatum': {4: u'Omnis omnis op
tio.', 5: [u'Voluptatibus.', u'Numquam qui qui.', u'http://bahringer.com/auth
or/'], 6: {4: datetime(1976, 6, 3, 20, 42, 52), 5: Decimal('12939334042.1'),
6: [u'Vel sed similique.', Decimal('-968.39980246')]}}, u'voluptas': {8: {8:
[u'Vel rerum quia.', u'Aperiam officiis in.'], 6: u'Ipsa non beatae.', 7: u'h
ttp://donnelly.com/terms/'}, 6: Decimal('-35.6'), 7: [9534, 1605, Decimal('-4
.21540418737E+12')]}, u'molestiae': {0: -811865398.937, 1: [u'Ipsum quos in o
mnis.', 4467, u'Nobis.'], 2: {0: u'Rerum alias dolorem.', 1: u'http://pfanner
still.com/home.html', 2: [u'Aut et officiis.', u'jackie.gottlieb@hotmail.com'
]}}, u'enim': {1: u'Beatae nam ut odio.', 2: [u'Et aut aut quasi.', u'Saepe o
fficiis.', u'http://gusikowski.biz/'], 3: {1: 7259, 2: u'alex.farrell@walker.
com', 3: [u'http://www.tromp.com/blog/tags/privacy.php', Decimal('57290273.37
2')]}}, u'molestias': {8: datetime(1978, 1, 10, 19, 59, 3), 9: [52692718.897,
u'http://www.quitzon.com/', 113896345221807.0], 10: {8: u'mariane50@hotmail.
com', 9: u'eric.emmerich@hand.biz', 10: [4015, 1200]}}, u'et': {8: [u'Est dig
nissimos.', -582365.7420196, u'Et odit laborum ut.'], 9: {8: Decimal('-1.9923
2256052E+13'), 9: [u'Enim consequatur.', u'http://www.huels.com/tag/main/tags
/index.asp'], 7: u'Praesentium.'}, 7: 1035}, u'atque': {3: u'Repellendus fugi
t.', 4: [u'kvolkman@bodejast.com', u'Nam saepe nihil et.', u'Officiis quo.'],
5: {3: 7778, 4: 4111, 5: [u'reichel.katharina@schulist.com', datetime(1984,
12, 22, 6, 38, 11)]}}})
fake.pydecimal(left_digits=None, right_digits=None, positive=False) # 813138968.731
fake.pylist(nb_elements=10, variable_nb_elements=True, *value_types) # [u'Dignissimos.', u'http://www.boganhintz.com/categories/categories/homepage.
php', u'sanford.magnolia@hotmail.com', u'At non aliquid.', 7741, 87500826857.
2962, u'ralph02@aufderharpollich.com', 7686, u'http://koelpindouglas.org/tags
/blog/terms.html', u'Voluptas ea natus.', 7165, u'Doloremque earum.', 1823]
fake.pytuple(nb_elements=10, variable_nb_elements=True, *value_types) # (u'tokuneva@kling.org', u'A dolorem.', 6377, u'Ullam corrupti.', u'Eos deseru
nt.', u'Nihil quia.', 5019)
fake.pybool() # True
fake.pyset(nb_elements=10, variable_nb_elements=True, *value_types) # set([u'osvaldo06@gmail.com', 4298, datetime(1977, 6, 8, 5, 15, 47), u'rempel.
eliezer@rutherford.com', u'Velit quae.', u'Temporibus.', u'Aut accusantium.']
)
fake.pydict(nb_elements=10, variable_nb_elements=True, *value_types) # {u'eum': u'Repudiandae.', u'velit': u'Aliquam optio ut.', u'commodi': u'Moles
tiae autem.', u'quis': u'quigley.christian@gmail.com', u'accusamus': Decimal(
'-14.48787'), u'ut': 61715747966374.0, u'error': u'Occaecati explicabo.', u'f
acilis': u'Et vitae totam.', u'enim': u'Quam repellat.', u'explicabo': dateti
me(1985, 2, 23, 1, 28, 19), u'officiis': u'Et id culpa sequi.', u'labore': u'
Aut tempore culpa.'}
fake.pyint() # 4166
fake.credit_card_security_code(card_type=None) # 816
fake.credit_card_full(card_type=None, validate=False, max_check=10) #
American Express
Ralph Bartoletti
379037504006334 12/18
CVC: 686
fake.credit_card_expire(start="now", end="+10y", date_format="%m/%y") # 06/15
fake.credit_card_number(card_type=None, validate=False, max_check=10) # 201493034311625
fake.credit_card_provider(card_type=None) # VISA 13 digit
faker.Factory can take a locale as an argument, to return localized data. If no localized provider is found, the factory fallbacks to the default locale (en_EN).:
from faker import Factory
fake = Factory.create('it_IT')
for i in range(0,10):
print fake.name()
> Elda Palumbo
> Pacifico Giordano
> Sig. Avide Guerra
> Yago Amato
> Eustachio Messina
> Dott. Violante Lombardo
> Sig. Alighieri Monti
> Costanzo Costa
> Nazzareno Barbieri
> Max Coppola
You can check available Faker locales in the source code, under the providers package. The localization of Faker is an ongoing process, for which we need your help. Don’t hesitate to create localized providers to your own locale and submit a PR!
Some example of included localized providers:
fake.state_abbr() # RA
fake.latitude() # -99.579871
fake.street_name() # Canale Conti
fake.address() # Borgo Nabil 59 Appartamento 21
Quarto Brigitta ligure, 36534 Pavia (VR)
fake.street_address() # Canale Gianriccardo 743
fake.postcode() # 61219
fake.longitude() # -4.116482
fake.country() # Isole Falkland (Malvinas)
fake.geo_coordinate() # -46.328470
fake.street_suffix() # Borgo
fake.city_prefix() # San
fake.city_suffix() # sardo
fake.building_number() # 06
fake.secondary_address() # Piano 7
fake.city() # Borgo Tristano umbro
fake.state() # Terni
fake.name() # Sig. Cesidia De Angelis
fake.last_name() # Neri
fake.first_name() # Gianmarco
fake.prefix() # Dott.
fake.company() # Bianchi SPA
fake.company_suffix() # e figli
fake.catch_phrase() # Migrazione stand-alone logistica
fake.bs() # webservices evolutive verticalizzate
fake.phone_number() # +23 42 2530333
fake.address() # 87, boulevard de Nguyen
18 421 Bernier
fake.latitude() # 18.516947
fake.department_number() # 81
fake.street_name() # boulevard de Herve
fake.department() # (u'38', u'Is\xe8re')
fake.department_name() # Finistère
fake.street_address() # 26, rue René Ribeiro
fake.postcode() # 86 828
fake.longitude() # -98.262211
fake.country() # Guatemala
fake.geo_coordinate() # 111.305524
fake.street_prefix() # boulevard
fake.street_suffix() # Street
fake.city_suffix() # -la-Forêt
fake.building_number() # 621
fake.region() # Wallis-et-Futuna
fake.city() # Rodrigues
fake.name() # Léon Thierry
fake.last_name() # Jourdan
fake.first_name() # Isaac
fake.prefix() # de
fake.company() # Colas Grondin et Fils
fake.company_suffix() # S.A.
fake.catch_phrase_verb() # d'atteindre vos buts
fake.catch_phrase() # L'avantage de rouler autrement
fake.catch_phrase_noun() # le droit
fake.siren() # 575 730 129
fake.siret(max_sequential_digits=2) # 205 560 539 00917
fake.catch_phrase_attribute() # plus facilement
fake.ipv4() # 6.14.119.96
fake.url() # http://www.langlois.com/
fake.company_email() # michaud.honore@fontaine.com
fake.uri() # http://www.navarro.com/index.htm
fake.tld() # com
fake.uri_path(deep=None) # blog/wp-content
fake.free_email() # guerin.daniel@ifrance.com
fake.user_name() # vincent53
fake.free_email_domain() # live.com
fake.domain_name() # monnier.com
fake.uri_extension() # .htm
fake.ipv6() # c578:0382:cf59:46e8:98e3:7c13:c5b6:91a6
fake.safe_email() # josephine.guilbert@example.net
fake.uri_page() # register
fake.email() # martine74@caron.fr
fake.domain_word() # bodin
fake.slug(value=None) # voluptas-ut-autem
fake.phone_number() # +33 4 38 41 91 92
fake.estado_nome() # Rio de Janeiro
fake.latitude() # -106.011949
fake.street_name() # Vereda Ribeiro
fake.street_prefix() # Rodovia
fake.address() # Conjunto Pereira, 775
Acaiaca
08618559 Barbosa de Cunha / RS
fake.street_address() # Praça Martins, 48
fake.bairro() # São João Batista
fake.longitude() # -160.626433
fake.country() # Sudão
fake.geo_coordinate() # 21.660349
fake.estado_sigla() # PI
fake.street_suffix() # Street
fake.city_suffix() # de Minas
fake.building_number() # 94
fake.estado() # (u'MA', u'Maranh\xe3o')
fake.city() # Cunha
fake.postcode() # 92673-460
fake.name() # Sabrina Martins
fake.last_name() # Rocha
fake.first_name() # Maitê
fake.prefix() # do
fake.company() # Lima Azevedo e Filhos
fake.company_suffix() # - EI
fake.ipv4() # 221.193.94.76
fake.url() # http://www.carvalho.com/
fake.company_email() # thiago.gomes@costela.br
fake.uri() # http://www.souza.com/search/author/
fake.tld() # br
fake.uri_path(deep=None) # explore/tags/category
fake.free_email() # rafaela04@gmail.com
fake.user_name() # alexia.pinto
fake.free_email_domain() # uol.com.br
fake.domain_name() # ferreira.com
fake.uri_extension() # .jsp
fake.ipv6() # 5f15:bd2b:fa0f:0d20:4e4d:3ab6:7eb7:0904
fake.safe_email() # vitor38@example.br
fake.uri_page() # author
fake.email() # bianca.dias@dias.com
fake.domain_word() # castro
fake.slug(value=None) # magnam-consequatur
fake.phone_number() # +55 71 8130 0097
In a python environment with faker installed you can use it with:
python -m faker [option] [*args]
[option]:
[*args]
: pass value to formatter (actually only strings):
$ python -m faker address
968 Bahringer Garden Apt. 722
Kristinaland, NJ 09890
from faker import Faker
fake = Faker()
# first, import a similar Provider or use the default one
from faker.providers import BaseProvider
# create new provider class
class MyProvider(BaseProvider):
def foo(self):
return 'bar'
# then add new provider to faker instance
fake.add_provider(MyProvider)
# now you can use:
fake.foo()
> 'bar'
You may want to get always the same generated data - for instance when using Faker for unit testing purposes. The generator offers a seed() method, which seeds the random number generator. Calling the same script twice with the same seed produces the same results.:
from faker import Faker
fake = Faker()
fake.seed(4321)
print fake.name() # Margaret Boehm
Faker is released under the MIT Licence.
Copyright (c) 2012 Daniele Faraglia
Portions Copyright (c) 2011 François Zaninotto
Portions Copyright (c) 2008 Caius Durling
Portions Copyright (c) 2008 Adam Royle
Portions Copyright (c) 2008 Fiona Burrows
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.