tests – Sam & Max http://sametmax.com Du code, du cul Tue, 10 Sep 2019 09:14:50 +0000 en-US hourly 1 https://wordpress.org/?v=4.9.7 32490438 Vérifier qu’un uuid est valide en Python http://sametmax.com/verifier-quun-uuid-est-valide-en-python/ http://sametmax.com/verifier-quun-uuid-est-valide-en-python/#comments Tue, 06 Sep 2016 11:23:50 +0000 http://sametmax.com/?p=20169 uuid, on veut vérifier qu'on récupère bien des uuid valides là où on les attend.]]> Si on teste du code qui utilise des uuid, on veut vérifier qu’on récupère bien des uuid valides là où on les attend.

Le plus simple est de déléguer cette vérification au module uuid qui est déjà celui qu’on utilise pour les produire.

from uuid import UUID

def is_uuid(uuid_string, version=4):
    try:
        # Si uuid_string est un code hex valide mais pas un uuid valid,
        # UUID() va quand même le convertir en uuid valide. Pour se prémunir
        # de ce problème, on check la version original (sans les tirets) avec
        # le code hex généré qui doivent être les mêmes.
        uid = UUID(uuid_string, version=version)
        return uid.hex == uuid_string.replace('-', '')
    except ValueError:
        return False

Et pouf:

>>> import uuid

>>> print(uuid.uuid4())
1049d03f-6f45-4637-89ff-f57567f6d022

>>> is_uuid('1049d03f-6f45-4637-89ff-f57567f6d022')
True

>>> is_uuid('1049d03f6f45463789fff57567f6d022')
True

>>> is_uuid('1049d03f6f45')
False

À chaque fois que j’utilise un uuid, j’ai un peu l’impression d’user la fabrique de l’univers, comme si je fabriquais quelque chose d’unique pour le mettre la poubelle, et qui n’existera plus jamais. Le gâchis d’un flocon de neige virtuel :)

]]>
http://sametmax.com/verifier-quun-uuid-est-valide-en-python/feed/ 9 20169
Générer des données factices avec faker 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 10029