2010-11-18 95 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

這不僅僅是應該是隨機的值,還有樹結構。 (具有隨機數的子元素的元素,以及具有隨機數的子元素的每個子元素等等。) – 2010-11-18 18:47:58

+0

@sprocketonline:很容易爲各種XML片段創建模板並將它們按隨機順序或隨機元素存在或不存在。 – 2010-11-18 18:52:40

0

對於XML文件,您可能要考慮Stylus Studios的XML Generator。您必須提前定義XML結構,但數據將是隨機的。這不是免費的產品,但您可以下載試用版並查看它是否符合您的需求。

爲了生成隨機JSON,在SO here上發佈了一個很好的建議。