2013-05-21 73 views
2

我使用unittest和selenium來自動執行瀏覽器測試。Python中測試自動化的隨機數據

我該如何去做一個測試,我可以運行多次,用戶創建一張票。票證必須有一個標題名稱,每次運行測試時,我都希望標題名稱是隨機的。

我想的格式爲: 「測試票,1 |測試票,2 ...」

+0

您遇到的問題與什麼? 「票1」,「票2」,...是微不足道的創造。 – Blender

+0

您顯示的示例看起來不是很隨意。此外,描述單個票證的格式,用逗號分隔的票證列表,由管道分隔的票證列表,或者......什麼?請模糊地描述預期的輸出。 – abarnert

+0

單票,每次我運行測試,它應該創建1張票。還有其他步驟,但我只想涵蓋名稱部分。我相信它很簡單,但我是小白 – gallly

回答

7

faker模塊提供了一些功能來填充幾個不同類型的數據:

import faker 
f = faker.Faker() 

In [11]: f. 
f.city   f.full_address f.phonenumber  f.zip_code 
f.company   f.last_name  f.state 
f.email   f.lorem   f.street_address 
f.first_name  f.name   f.username 

In [11]: f.city() 
Out[11]: u'Treyview' 

如果你要測試隨機,我建議隨機生成一個seed(並記錄它),這樣你可以重新創建任何失敗的測試。 你不想要的是那些失敗的測試,但是爲什麼(即,如果再次測試,以不同的隨機值通過)還不清楚。

+0

謝謝你的建議,我不知道你的意思是隨機產生的種子,你能提供給我看看:)一些代碼。我猜測,當我到達售票的形式,send_keys,這是我需要有一臺發電機? – gallly

+0

@JacobHong我不知道如果你真的* *要的是像[法克爾(https://pypi.python.org/pypi/Faker/0.0.4)... –

+0

這是比我想,林學這些文件現在謝謝:) – gallly

1

如果你只需要字符串Test ticket,1 ...是:

from random import randint 
randomString = "Test ticket, " + randint(min,max) 

如果你想生成隨機字符串,你可以使用

''.join(random.choice(string.ascii_uppercase + string.digits) for x in range(max)) 

你也可能想要考慮防止字符串是平等的。 在這種情況下,你可以創建一個range(min,max)和使用random.shuffle()

+0

感謝這差不多就是我一直在尋找,我想在一個問題補充。我如何製作測試用例,多次運行?只需添加一個循環或什麼? – gallly

0

您可以在您的測試定義了以下功能:

import random, string 

def random_word(self, length=6, chars=string.ascii_lowercase): 
    return ''.join(random.choice(chars) for i in range(length)) 

def random_id(self, size=6, chars=string.ascii_uppercase + string.digits): 
    return ''.join(random.choice(chars) for _ in range(size)) 

def random_number(self, length=3): 
    return ''.join(random.choice(string.digits) for i in range(length)) 

和類似。

參見:

0

faker已被棄用,你應該使用fake-factory代替。

pip install fake-factory 

用同樣的方法爲前:

from faker import Factory 
fake = Factory.create() 

# OR 
from faker import Faker 
fake = Faker() 

fake.name() 
# 'Lucy Cechtelar' 

或者與本地化數據(例如,生成意大利地名):

from faker import Factory 
fake = Factory.create('it_IT') 
for _ in range(0,10): 
print fake.name() 

> Elda Palumbo 
> Pacifico Giordano 
> Sig. Avide Guerra 
> Yago Amato 
> Eustachio Messina 
> Dott. Violante Lombardo 
> Sig. Alighieri Monti 
> Costanzo Costa 
> Nazzareno Barbieri 
> Max Coppola