2012-04-07 14 views
2

Ich habe vor kurzem begonnen, Windmühle und Python zu verwenden, um automatisierte Tests meiner Webanwendung auszuführen. Dies ist der Python-Skript, das Windmühle automatisch generiert aus meiner Aufzeichnung von Ereignissen:Python-Neuling erzeugt zufällige Strings

# 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') 

ich Python völlig neu bin und ich arbeite einige der Syntax jetzt auf dem Lernen. Aber kann mir jemand helfen, den Input-Text in den verschiedenen Feldern zufällig zu machen?

Zum Beispiel: Linie 2: Auf den einem Test werde ich

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

und auf einem anderen mag:

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

(zufällig, verschieden)

Dank!

+0

Wenn Sie dies tun, wie können Sie sicher sein, dass die Daten Ihrer Web-Anwendung für den Testlauf tatsächlich entspricht die Zufallsdaten erzeugt wird, zu sehen? Warum kümmern Sie sich überhaupt um zufällige Daten? –

Antwort

6

An der Spitze des Programms, Sie über die erforderliche Module zu importieren und die Liste der Zeichen, die Sie in Ihrer zufälligen Zeichenfolge setzen wollen:

import string 
import random 

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

In der Testfunktion erstellen Sie eine zufällige Zeichenfolge von alphanumerischen Zeichen, etwa so:

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

Sie suchen die random Paket. Es hat eine shuffle Methode, die eine Liste an Ort und Stelle mischt.

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) 

Der String-Modul einige praktische Strings bietet, die string.uppercase sind, string.lowercase, string.digits, ... Sie können diese aus Bequemlichkeit verwenden oder eigene Liste von Zeichen schreiben. "".join(L) wird alle Buchstaben der Liste L durch nichts trennen, so erhalten Sie die Zeichenfolge in einer Zeichenfolge.

In Ihrem Fall könnten Sie verwenden:

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

Dies funktioniert nicht: Die Frage ist nicht zum Mischen von Zeichen, sondern zum Abrufen einer Zeichenfolge von zufälligen Zeichen. Diese Lösung kann z. B. keine Zeichenfolge mit 1000 zufälligen Zeichen generieren. – EOL

+0

Wenn er so viele Charaktere braucht, kann er die Variable 'chars' in das ändern, was ihm passt' chars * 200' und ihn mischen. Aber das wird er in seinem Fall nicht brauchen. – jadkik94

+1

@ jadkik94 Ihre Funktion ist falsch, weil ein gegebenes Zeichen nur einmal in der Zeichenkette vorkommen kann. Während die Zeichenfolge immer noch "zufällig" ist, ist diese Lösung nicht korrekt. –

Verwandte Themen