2012-04-07 12 views
2

私は最近風車とpythonを使ってWebアプリケーションの自動テストを実行し始めました。これは、風車私のイベントを記録から自動生成することをPythonスクリプトです:Python newbieはランダムな文字列を生成します

# 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:1回のテストで 私は

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

と別に希望:

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

(ランダム、異なる)

感謝を!あなたのプログラムの上部に

+0

をあなたがこれを行う場合、どのようにあなたのWebアプリケーションは、実際に見ているデータは、テスト実行のために生成されたランダムデータと一致することを確認することができますか?とにかく、ランダムなデータを持っているのはなぜですか? –

答えて

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.digits、string.uppercaseにstring.lowercaseされているいくつかの便利な文字列を、提供し、...あなたは便宜のためにこれらを使用したり、文字の独自のリストを書くことができます。 "".join(L)は、リストLのすべての文字を何も指定しないので、文字列を1つの文字列で取得します。あなたのケースでは

、あなたが使用できます。

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

これはうまくいきません。問題は文字をシャッフルすることではなく、ランダムな文字列を取得することです。この解決策は、例えば、1000個のランダムな文字列を生成することはできない。 – EOL

+0

多くの文字が必要な場合は、 'chars'変数を' chars * 200'に合ったものに変更してシャッフルします。しかし彼は**彼の**ケースでそれを必要としません。 – jadkik94

+1

@ jadkik94あなたの関数は間違っています。なぜなら、与えられた文字は一度文字列にしか現れないからです。文字列はまだ "ランダム"ですが、この解決策は正確ではありません。 –

関連する問題