2010-11-18 3 views
2

Кто-нибудь знает о приложении, которое будет генерировать xml-файл, заполненный случайными данными?Создать случайные данные для тестирования

У моего приложения есть импортер, который должен обрабатывать практически все размеры и структуру файлов xml, и я бы хотел проверить это.

Должно быть ясно; не только все имена и значения элементов должны быть случайными, но также и сама древовидная структура. Должны быть случайные числа дочерних ветвей, каждая из которых имеет дополнительные случайные ветви и т. Д.

Аналогично, есть ли приложение, которое создавало бы такие же случайные данные для файлов Json?

ответ

2

Шаг 1. Определите шаблон для повторяющихся элементов в XML.

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

Шаг 2. Генерировать случайные значения.

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

Шаг 3. Вставьте случайные значения в шаблон.

t.substitute(**args) 

Вы можете без особых усилий легко генерировать много случайных XML. Хотите вместо имен вместо имен?

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

Хотите названия переменной длины?

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

Возможности бесконечны и действительно просты в реализации.


Случайный JSON еще проще.

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

Если "случайные" путает вас, рассмотреть этот вопрос.

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)) 

Это, например, создаст случайные теги в другом теге.

+0

Это не только значения, которые должны быть случайными, но и древовидной структурой. (Элементы со случайными числами дочерних элементов и каждый ребенок со случайным числом дочерних элементов и т. Д.) –

+0

@sprocketonline: легко создавать шаблоны для различных фрагментов XML и комбинировать их в случайных порядках или со случайными элементами, присутствующими или не присутствующими , –

0

Для файлов XML, вы можете рассмотреть XML Generator от Stylus Studios. Вам нужно будет определить структуру XML раньше времени, но данные будут случайными. Это не бесплатный продукт, но вы можете скачать пробную версию и посмотреть, соответствует ли она вашим потребностям.

Для генерации случайных JSON хорошее предложение было опубликовано на SO here.

Смежные вопросы