2012-04-07 153 views
2

我最近开始使用风车和python来运行我的web应用程序的自动化测试。这是记录我的事件风车自动生成的python脚本:Python新手生成随机字符串

# Generated by the windmill services transformer 
from windmill.authoring import WindmillTestClient 
import string 
import random 

    def test_recordingSuite0(): 
     client = WindmillTestClient(__name__) 

     client.click(id=u'input-999052296848829736') 
     client.type(text=u'btsr65ejdfgdjdfg', id=u'input-999052296848829736') 
     client.click(id=u'input-999052296848829736-1') 
     client.type(text=u'dfgdbdfgdfgjdfgjd', id=u'input-999052296848829736-1') 
     client.click(name=u'_u911175390904082714') 
     client.select(option=u'1', name=u'_u911175390904082714') 
     client.click(value=u'1') 
     client.click(id=u'input-497945674625883994') 
     client.type(text=u'[email protected]', id=u'input-497945674625883994') 
     client.click(name=u'_u969737303932735624') 
     client.radio(name=u'_u969737303932735624') 
     client.type(text=u'asdg9a7e0g57wn4bgwsdfhsdfhsdfhssdhsd', id=u'input-542327653202413691') 
     #client.click(name=u'submit') 
     #client.waits.forPageLoad(timeout=u'20000') 

我完全新的Python和我正在学习一些语法的现在。但有人可以帮助我在各个领域随机输入输入文本吗?

例如:线路2: 在一个测试,我想

client.type(text=u'LAKJSDOGUSDGSDGS', id=u'input-999052296848829736') 

,并在另一个:

client.type(text=u'908374098afsDGSGS', id=u'input-999052296848829736') 

(随机的,不同的)

谢谢!

+0

如果你这样做,你怎么能确定你的Web应用程序实际看到的数据测试运行产生的随机数据相匹配?无论如何,你为什么要关心随机数据? – 2012-04-07 09:32:33

回答

6

在你的程序的顶端,导入必要的模块,你会得到你想要把你的随机字符串的字符列表:

import string 
import random 

CANDIDATE_CHARS = string.ascii_letters+string.digits # lowercase and uppercase letters, and digits 

在测试功能,您可以创建一个随机字符串字母数字字符,如下所示:

random_text = u''.join(random.choice(CANDIDATE_CHARS) for _ in range(16)) # 16 random characters 
client.type(text=random_text, id=u'input-999052296848829736') 
-1

您正在寻找random程序包。它有一个shuffle方法,它在原地洗牌。

import string, random 

def get_random_string(length): 
    chars = list(string.lowercase+string.digits) 
    random.shuffle(chars) 

    return "".join(chars[:length]) 

for i in range(12): 
    print get_random_string(10) 

string模块提供了一些便利的字符串,这是string.uppercase,string.lowercase,string.digits,...您可以使用这些为了方便或写自己的角色列表。 "".join(L)会将列表L中的所有字母分隔开,因此您可以获得一个字符串中的字符序列。

在你的情况,你可以使用:

client.type(text=unicode(get_random_string(20)), id=u'input-999052296848829736') 
+0

这不起作用:问题不是关于洗牌字符,而是关于获取一串随机字符。该解决方案不能生成例如1​​000个随机字符的字符串。 – EOL 2012-04-07 09:33:10

+0

如果他需要那么多的角色,他可以将'chars'变量更改为适合他的任何字符* 200并将其洗牌。但他不会在**他的案件中需要这件事。 – jadkik94 2012-04-07 09:40:41

+1

@ jadkik94你的函数是错误的,因为给定的字符只能出现在字符串中一次。虽然字符串仍然是“随机的”,但该解决方案并不准确。 – 2012-04-07 10:19:24