2010-11-18 12 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ファイルの場合、Stylus StudiosによってXML Generatorと考えるとよいでしょう。事前にXML構造を定義する必要がありますが、データはランダムになります。無料の製品ではありませんが、体験版をダウンロードしてニーズに合っているかどうかを確認できます。

ランダムなJSONを生成するために、SO hereに良い提案が掲載されています。

関連する問題