2010-11-18 5 views
2

Est-ce que quelqu'un sait d'une application qui générerait un fichier XML rempli avec des données aléatoires?Créer des données aléatoires pour les tests

Mon application a un importateur qui doit gérer presque toutes les tailles et la structure des fichiers XML, et je voudrais tester.

Pour être clair; non seulement tous les noms et valeurs d'éléments doivent être aléatoires, mais aussi la structure arborescente elle-même. Il devrait y avoir des nombres aléatoires de branches d'enfants, chacune avec d'autres branches aléatoires et ainsi de suite.

De même, il est une application qui créerait le même type de données aléatoires pour les fichiers Json?

Répondre

2

Étape 1. définir un modèle pour les éléments répétitifs dans le XML.

t= string.Template("""<sometag><data>${data}</data><moredata>${moredata}</moredata></sometag>""") 

Étape 2. Générez des valeurs aléatoires.

import random 
args = dict(
    data = random.random(), 
    moredata= random.random() 
) 

Étape 3. Insérez des valeurs aléatoires dans le modèle.

t.substitute(**args) 

Vous pouvez, sans trop de travail, générer facilement beaucoup de données XML aléatoires. Vous voulez des noms au lieu de chiffres?

def random_name(size=8): 
    return "".join(random.choice(string.ascii_letters) for x in range(size)) 

Voulez-vous des noms de longueur variable?

def random_variable_len_name(mean_size= 8, std_size= 2): 
    size= int(random.gauss(mean_size, std_size)) 
    return random_name(size) 

Les possibilités sont infinies et très simples à mettre en œuvre.


Random JSON est encore plus facile.

import json 
import random 
args = dict(
    data = random.random(), 
    moredata= random.random() 
) 
json.dumps([args])   

Si "aléatoire" vous embrouille, considérez ceci.

t1 = string.Template("""<sometag>${body}</sometag>""") 
t2 = string.Template("""<othertag attr="$attr">$data</othertag>""") 
t3 = string.Template("""<moretag attr="$attr">$data</moretag>""") 
elements = random.randint(0,4) 
body= [ random.choice([t2,t3]).substitute(attr=random.random(), data= random_name()) for x in range(elements) ] 
t1.substitute(body="".join(body)) 

Cela, par exemple, va créer des étiquettes aléatoires dans une autre étiquette.

+0

Ce ne sont pas seulement les valeurs qui devraient être aléatoires, mais aussi la structure arborescente. (Éléments avec des nombres aléatoires d'éléments enfants, et chaque enfant avec un nombre aléatoire d'éléments enfants, etc.) –

+0

@sprocketonline: Il est facile de créer des modèles pour divers fragments XML et de les combiner dans des ordres aléatoires ou avec des éléments aléatoires présents ou non présents . –

0

Pour les fichiers XML, vous pouvez envisager XML Generator par Studios Stylus. Vous devrez définir la structure XML à l'avance, mais les données seront aléatoires. Ce n'est pas un produit gratuit, mais vous pouvez télécharger l'essai et voir si cela correspond à vos besoins.

Pour générer JSON au hasard, une bonne suggestion a été affiché sur le SO here.

Questions connexes