我使用unittest和selenium來自動執行瀏覽器測試。Python中測試自動化的隨機數據
我該如何去做一個測試,我可以運行多次,用戶創建一張票。票證必須有一個標題名稱,每次運行測試時,我都希望標題名稱是隨機的。
我想的格式爲: 「測試票,1 |測試票,2 ...」
我使用unittest和selenium來自動執行瀏覽器測試。Python中測試自動化的隨機數據
我該如何去做一個測試,我可以運行多次,用戶創建一張票。票證必須有一個標題名稱,每次運行測試時,我都希望標題名稱是隨機的。
我想的格式爲: 「測試票,1 |測試票,2 ...」
的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(並記錄它),這樣你可以重新創建任何失敗的測試。 你不想要的是那些失敗的測試,但是爲什麼(即,如果再次測試,以不同的隨機值通過)還不清楚。
如果你只需要字符串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()
感謝這差不多就是我一直在尋找,我想在一個問題補充。我如何製作測試用例,多次運行?只需添加一個循環或什麼? – gallly
您可以在您的測試定義了以下功能:
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))
和類似。
參見:
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
您遇到的問題與什麼? 「票1」,「票2」,...是微不足道的創造。 – Blender
您顯示的示例看起來不是很隨意。此外,描述單個票證的格式,用逗號分隔的票證列表,由管道分隔的票證列表,或者......什麼?請模糊地描述預期的輸出。 – abarnert
單票,每次我運行測試,它應該創建1張票。還有其他步驟,但我只想涵蓋名稱部分。我相信它很簡單,但我是小白 – gallly