Sam & Max » tests http://sametmax.com Du code, du cul Sat, 07 Nov 2015 10:56:13 +0000 en-US hourly 1 http://wordpress.org/?v=4.1 Générer des données factices avec faker 12 http://sametmax.com/generer-des-donnees-factices-avec-faker/ http://sametmax.com/generer-des-donnees-factices-avec-faker/#comments Thu, 17 Apr 2014 08:30:21 +0000 http://sametmax.com/?p=10029 faker fait partie de ses libs que j’ai toujours voulu écrire sans jamais prendre le temps de le faire. Comme arrow par exemple. Et puis un jour quelqu’un le fait, et je suis à la fois soulagé de ne pas avoir tenté de le faire (au risque de ne pas réussir aussi bien) et un peu déçu d’être passé à côté de la bonne idée.

Le principe de la lib est très simple : générer des données bidons. Noms, numéros de téléphone, adresses physiques ou email… C’est utile pour tout un tas de choses :

  • Faire des tests, évidement.
  • Créer des bots, des crawlers et tout autre programme qui doit se faire passer pour un utilisateur.
  • Remplir une base de données vide en attendant que les utilisateurs réels remplissent le site. Cela évite le sentiment d’arriver sur un service désert. Tous les sites de rencontre font ça.
  • Générer un contexte artificiel, par exemple pour un jeu vidéo.

Faker est déjà très simple à utiliser :

>>> from faker import Faker
>>> f = Faker()
>>> f.phone_number()
u'+69(4)8833689405'
>>> f.phone_number()
u'1-201-240-9452'
>>> f.phone_number()
u'+95(8)7680219065'
>>> f.phone_number()
u'754-833-9664x654'
>>> f.email()
u'bentley.gaylord@batz.org'
>>> f.email()
u'ludwig.rohan@adamskoch.info'

Et surtout déjà très riche. Il y a plus d’une centaine de choses que vous pouvez générer. Quelques exemples :

  • f.city
  • f.company
  • f.credit_card_number
  • f.date_time_this_decade
  • f.geo_coordinate
  • f.hex_color
  • f.ipv4
  • f.language_code
  • f.md5
  • f.mime_type
  • f.month_name
  • f.paragraph
  • f.password
  • f.postcode
  • f.ssn
  • f.street_address
  • f.url
  • f.user_agent
  • f.word

faker est très flexible. En effet, beaucoup d’éléments existent en plusieurs versions ou de manière composée et utilisables séparément. Ainsi, on peut prendre l’IPV4 ou V6, choisir l’adresse entière ou le code postal seul, récupérer le nom complet, ou juste le prénom :

>>> f.name()
u'Olin McCullough'
>>> f.first_name()
u'Brandie'

Mais en plus, faker est localisé :

>>> f = Faker(locale="fr_FR")
>>> f.name()
u'Martine de la Petitjean'

Enfin, on peut créer ses propres générateurs et fournisseurs de données au besoin.

Comme dirait Max, c’est d’la balle baby !

]]>
http://sametmax.com/generer-des-donnees-factices-avec-faker/feed/ 12