JSON - Faker & Mockup
Générez et validez des données JSON avec la librairie Faker de Python et Mockaroo. Apprenez à créer de fausses données pour vos tests et à garantir la qualité des fichiers reçus avec des schémas.
Traduction automatique
Journal des modifications

Cet article traite de la génération et de la validation de fausses données JSON pour vos tests : utiliser la librairie Faker de Python pour scripter des faux enregistrements sur mesure, utiliser Mockaroo.com (constructeur de schéma + API gratuite) pour générer de gros jeux de données comme 1 000 rows ou plus, et utiliser un convertisseur JSON-vers-schéma en ligne avec la librairie jsonschema de Python pour valider que les fichiers reçus correspondent bien à la structure attendue.
J'ai récemment travaillé sur un projet ETL en Python. Entre autres choses, le script devait traiter des fichiers JSON que les utilisateurs déposaient dans un dossier précis.
Comme il s'agissait d'une application sensible, il était important de valider le script en soumettant de faux fichiers JSON, mais aussi de garantir la qualité des fichiers reçus.
Deux compagnons quand vous travaillez avec du JSON en ligne de commande : L'utilitaire jq pour Linux pour inspecter et filtrer un fichier généré, et Afficher un fichier JSON sous forme de mind map pour saisir d'un coup d'œil la structure d'un fichier inconnu.
Pour les faux fichiers, j'ai utilisé un outil comme la librairie Faker pour Python.
Générer un faux fichier JSON
L'idée est donc de générer un dictionnaire (un fichier json) avec de fausses données. Avec la librairie Faker, c'est vraiment, vraiment simple.
Installez d'abord la librairie avec pip install faker.
Voici un petit script Python pour générer de fausses données en français (remplacez simplement range(1) par range(100), par exemple, pour obtenir 100 enregistrements) :
fake = Faker()
fake = Faker('fr_FR')
data = []
for _ in range(1): user = { 'firstname': fake.first_name(), 'lastname': fake.last_name(), 'address': fake.street_address(), 'city': fake.city(), 'country': fake.country(), 'gender': fake.random_element(elements=('Homme', 'Femme', 'Non binaire')) }
data.append(user)
# Pretty print the JSON dataprint(json.dumps(data, indent=4, ensure_ascii=False))Ce code crée un générateur de données fictives configuré pour le français, puis génère un enregistrement utilisateur avec des informations personnelles aléatoires (prénom, nom, adresse, ville, pays, genre) et affiche le résultat en JSON formaté. La boucle for itère une seule fois pour produire un utilisateur.

Information
Poursuivez votre lecture avec la documentation officielle de Faker : https://faker.readthedocs.io/en/master/
Utiliser Mockaroo.com
Le site https://www.mockaroo.com/ permet de créer de fausses données gratuitement (pour accéder à certaines fonctions, vous devrez créer un compte gratuit).

Créer de fausses données à partir d'un schéma
Après avoir créé un compte gratuit sur Mockaroo, cliquez sur le bouton Schemas, puis sélectionnez Create a schema. Sur l'écran suivant, cliquez sur Generate fields using AI... et collez une chaîne JSON existante :

Cela fait, vous pourrez générer un grand nombre de rows — par exemple, un fichier avec plus de 1 000 enregistrements.
En sauvegardant les exemples dans un vrai fichier JSON sur le disque, vous pouvez ensuite utiliser ce fichier pour tester votre application.
Utiliser l'API
En créant un compte gratuit sur Mockaroo, vous pouvez obtenir une clé d'API gratuite (limitée à 200 requêtes/jour).
La documentation de l'API est ici : https://mockaroo.com/docs.
Comme précédemment, cliquez sur le bouton Schemas, créez un schéma et sauvegardez-le.
J'ai créé le schema_test comme ceci :

Je peux ensuite l'utiliser en Python comme ceci :
# My API key as displayed in my profile page on Mockarooapi_key = "MY_API_KEY"
# This is the name of my schemaschema = "schema_test"
# Number of records I wantnum_records = 10
# Construct the API endpoint URLurl = f"https://api.mockaroo.com/api/generate?key={api_key}&count={num_records}&schema={schema}"
# Make the API requestresponse = requests.get(url)
# Check if the request was successfulif response.status_code == 200: # Parse the JSON response data = response.json()
# Display the result on the console print(data)else: print(f"Error fetching data: {response.text}")Ce script interroge l'API Mockaroo pour générer des données de test. Il construit une URL avec la clé API, le schéma et le nombre d'enregistrements souhaités, envoie la requête HTTP, puis affiche les données reçues ou un message d'erreur selon que la requête a réussi.
Information
Pour que ce code fonctionne, pensez à installer la librairie requests : pip install requests.
En appelant mon script deux fois, j'ai obtenu chaque fois un jeu de données différent :

Convertisseur JSON vers schéma en ligne
Le site https://www.liquid-technologies.com/online-json-to-schema-converter vous permet de copier/coller du JSON existant et d'obtenir un squelette de schéma JSON.

Une fois le schéma en main, vous pouvez l'utiliser en Python comme ceci :
def validate_json(data_file, schema_file): with open(schema_file) as f: schema = json.load(f)
with open(data_file) as f: data = json.load(f)
jsonschema.validate(instance=data, schema=schema)
data_file = "data.json"schema_file = "schema.json"
try: validate_json(data_file, schema_file) print("Data is valid!")except jsonschema.exceptions.ValidationError as exception: print(f"Data is invalid: {exception}")Cette fonction charge un fichier JSON contenant les données à valider et un fichier JSON contenant le schéma de validation, puis utilise jsonschema pour vérifier que les données respectent le schéma. Le code appelle ensuite cette fonction et capture les erreurs de validation pour les afficher à l'utilisateur.
Information
Vous devrez d'abord lancer pip install jsonschema.
Maintenant, je vais tester mon fichier. La première fois, mon fichier JSON sera correct. J'ai ensuite supprimé l'enregistrement city de mon JSON, et relancer le script échoue bien, comme prévu :

Information
Comme on le voit, très vite, nous avons généré 1 000 enregistrements et, aussi, un schéma de validation. Puis, en quelques lignes de Python, nous nous sommes assurés que le fichier est correct ou, sinon, nous avons repéré où se trouve l'erreur.
D'autres outils JSON à connaître : afficher un fichier JSON sous forme de carte mentale et linter/valider vos fichiers JSON.





