创建随机数据以进行测试

时间:2010-11-18 18:36:31

标签: unit-testing testing

有没有人知道会生成一个用随机数据填充的xml文件的应用程序?

我的应用有一个导入器,应该可以处理几乎所有xml文件的大小和结构,我想测试一下。

要清楚;不仅所有元素名称和值都需要是随机的,而且树结构本身也是如此。应该有随机数的子分支,每个分支都有更多的随机分支等等。

同样,是否有一个应用程序会为Json文件创建相同类型的随机数据?

2 个答案:

答案 0 :(得分: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 ) )
例如,

将在另一个标签内创建随机标签。

答案 1 :(得分:0)

对于XML文件,您可能需要考虑Stylus Studios的XML Generator。您必须提前定义XML结构,但数据将是随机的。它不是免费产品,但您可以下载试用版,看看它是否符合您的需求。

为了生成随机JSON,已在SO here上发布了一个好的建议。