相信大家都遇到過這樣的場景,比如創(chuàng)建產品、賬號以及其他的數(shù)據(jù)的時候,會有唯一性限制,因此產品名稱等每次都必須不同,但是我們沒必要每次都專門針對這樣一個字段去設計不同的測試數(shù)據(jù)。
這種情況可以使用隨機函數(shù)來處理,隨機生成字符串,當然也可能會重復,但是只要設置的字符串的長度足夠長,那么發(fā)生重復的概率極小。
需要隨機函數(shù),就需要用到隨機函數(shù)庫random,這是python自帶的標準庫:
import random
random庫主要有如下函數(shù):
| 函數(shù)名 | 說明 | 舉例 |
|---|---|---|
| random() | 生成一個0~1之間的隨機浮點數(shù),范圍 0 <= n < 1.0 | random.random() |
| uniform(a,b) | 返回a, b之間的隨機浮點數(shù),范圍[a, b]或[a, b), 取決于四舍五入,a不一定要比b小 | random.uniform(1,5) |
| randint(a, b) | 返回a, b之間的整數(shù),范圍[a, b],注意:傳入?yún)?shù)必須是整數(shù),a一定要比b小 | random.randint(0, 100) |
| randrang([start], stop[, step]) | 類似range函數(shù),返回區(qū)間內的整數(shù),可以設置step。 | random.randrang(1, 10, 2) |
| choice(seq) | 從序列seq中隨機讀取一個元素 | random.choice([1,2,3,4,5]) |
| choices(seq,k) | 從序列seq中隨機讀取k個元素,k默認為1 | random.choices([1,2,3,4,5], k=3) |
| shuffle(x) | 將列表中的元素打亂,俗稱為洗牌。會修改原有序列。 | random.shuffle([1,2,3,4,5]) |
| sample(seq, k) | 從指定序列中隨機獲取k個元素作為一個片段返回,sample函數(shù)不會修改原有序列 | random.sample([1,2,3,4,5], 2) |
random庫中的大多數(shù)函數(shù)使用時,都需要先設計一個序列。如果我們不想每次都去定義,而只是想隨機取出一些數(shù)字、字母組合的話,就需要用到另一個標準庫string:
import string
用string庫主要用里面定義的一些字符串常量,比如string.ascii_letters為所有的大小寫字母,其他涉及的字符串常量如下:
| 常量 | 值 | 說明 |
|---|---|---|
| ascii_lowercase | 'abcdefghijklmnopqrstuvwxyz' | a-z全小寫字母 |
| ascii_uppercase | 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' | A-Z全大寫字母 |
| ascii_letters | ascii_lowercase + ascii_uppercase | 所有大小寫字母 |
| digits | '0123456789' | 0-9數(shù)字集合 |
| hexdigits | digits + 'abcdef' + 'ABCDEF' | 十六進制集合 |
| octdigits | '01234567' | 八進制集合 |
| punctuation | !"#$%&'()*+,-./:;<=>?@[]^_`{|}~ | 特殊字符組合 |
| printable | digits + ascii_letters + punctuation + whitespace | 所有字符集合 |
string和random組合使用舉例:
import random
import string
s = string.digits + string.ascii_letters # 組合數(shù)字與字母的序列
print(random.sample(s, 6)) # 隨機取出6個字母和數(shù)字的組合
運行結果
['3', '1', 'c', 'W', '7', 'Z']
自動化實例:
import random
import string
from time import sleep
from selenium import webdriver
# 生成隨機數(shù)
# 組合數(shù)字與字母的序列
s = string.digits + string.ascii_letters
# 隨機取出6個字母和數(shù)字的組合并合并成字符串
random_data = ''.join(random.sample(s, 6))
# 使用生成的隨機數(shù)搜索
driver = webdriver.Chrome()
driver.get('http://www.baidu.com')
# 使用固定值+隨機數(shù)據(jù)進行搜索
driver.find_element_by_id('kw').send_keys('劉德華' + random_data)
driver.find_element_by_id('su').click()
sleep(5)
driver.quit()
自己敲一遍試試!
學不會只有一種原因,就是懶!

懶死的