相信大家都遇到過這樣的場景,比如創(chuàng)建產品、賬號以及其他的數據的時候笔刹,會有唯一性限制,因此產品名稱等每次都必須不同冬耿,但是我們沒必要每次都專門針對這樣一個字段去設計不同的測試數據舌菜。
這種情況可以使用隨機函數來處理,隨機生成字符串亦镶,當然也可能會重復日月,但是只要設置的字符串的長度足夠長,那么發(fā)生重復的概率極小缤骨。
需要隨機函數爱咬,就需要用到隨機函數庫random,這是python自帶的標準庫:
import random
random庫主要有如下函數:
函數名 | 說明 | 舉例 |
---|---|---|
random() | 生成一個0~1之間的隨機浮點數,范圍 0 <= n < 1.0 | random.random() |
uniform(a,b) | 返回a, b之間的隨機浮點數绊起,范圍[a, b]或[a, b), 取決于四舍五入,a不一定要比b小 | random.uniform(1,5) |
randint(a, b) | 返回a, b之間的整數精拟,范圍[a, b],注意:傳入參數必須是整數虱歪,a一定要比b小 | random.randint(0, 100) |
randrang([start], stop[, step]) | 類似range函數串前,返回區(qū)間內的整數,可以設置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函數不會修改原有序列 | random.sample([1,2,3,4,5], 2) |
random庫中的大多數函數使用時铐尚,都需要先設計一個序列拨脉。如果我們不想每次都去定義,而只是想隨機取出一些數字宣增、字母組合的話玫膀,就需要用到另一個標準庫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數字集合 |
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 # 組合數字與字母的序列
print(random.sample(s, 6)) # 隨機取出6個字母和數字的組合
運行結果
['3', '1', 'c', 'W', '7', 'Z']
自動化實例:
import random
import string
from time import sleep
from selenium import webdriver
# 生成隨機數
# 組合數字與字母的序列
s = string.digits + string.ascii_letters
# 隨機取出6個字母和數字的組合并合并成字符串
random_data = ''.join(random.sample(s, 6))
# 使用生成的隨機數搜索
driver = webdriver.Chrome()
driver.get('http://www.baidu.com')
# 使用固定值+隨機數據進行搜索
driver.find_element_by_id('kw').send_keys('劉德華' + random_data)
driver.find_element_by_id('su').click()
sleep(5)
driver.quit()
自己敲一遍試試帖旨!
學不會只有一種原因,就是懶灵妨!
懶死的