Python隨機函數(shù)庫random

自動化測試時,有如下一些情況:

  1. 注冊賬號時,如果已經(jīng)注冊過的賬號,再次運行腳本時就會失敗。
    為了避免這種情況,我們可以使用時間戳或者隨機函數(shù)增加一些隨機內(nèi)容。
  2. 界面上有很多數(shù)據(jù),我們不關(guān)注具體數(shù)據(jù)的執(zhí)行結(jié)果,只關(guān)注操作過程。
    我們就可以批量提取數(shù)據(jù)(find_elements),然后隨機選擇一條數(shù)據(jù)操作。

這些情況都會用到隨機函數(shù)庫。

Python 中的隨機函數(shù)庫 random,提供了各種隨機數(shù)據(jù)生成(int、float、string、list等)。

random庫是 Python 自帶的一個標準庫。直接引入即可使用。

import random

該庫中主要函數(shù)如下:

random()

生成一個0 ~ 1之間的隨機浮點數(shù),范圍 0 <= n < 1.0。

注意,函數(shù)名也叫 random, 和庫名一樣。

>>> random.random()
0.5449476270094615

uniform(a, b)

uniform 方法, 返回 a 到 b 之間的隨機浮點數(shù),范圍 [a, b] 或 [a, b),取決于四舍五入,a不一定要比b小。

>>> random.uniform(50, 100)
76.81733455677832
>>> random.uniform(100, 50)
52.98730193316595

randint(a, b)

randint 方法, 返回a 到 b之間的整數(shù),范圍 [a, b],注意:傳入?yún)?shù)必須是整數(shù),a 一定要比 b 小。

>>> random.randint(50, 100)
54
>>> random.randint(100, 50)
# ValueError: empty range for randrange() (100,51, -49)

randrange([start], stop[, step])

randrange 函數(shù)返回一個區(qū)間內(nèi)的整數(shù),可以設(shè)置step。

注意,只能傳入整數(shù)。

random.randrange(10, 100, 2)
16
# 結(jié)果相當(dāng)于從[10, 12, 14, 16, … 96, 98]序列中獲取一個隨機數(shù)。

startstop 參數(shù)是可選參數(shù)。

>>>random.randrange(100)
58
# 隨機取 0 到 100 中的一個整數(shù)
>>> random.randrange(80, 100)
99
# 隨機取 80 到 100 之間的一個整數(shù)

choice(sequence)

choice 從序列 sequence中隨機獲取一個元素,list,tuple,字符串都屬于序列。

random.randrange(10, 100, 2) 在結(jié)果上與 random.choice(range(10, 100, 2) 等效。

>>> random.choice(("stone", "scissors", "paper"))
'stone'
# 從元組中取值
>>> random.choice(["stone", "scissors", "paper"])
'scissors'
# 從列表中取值
>>> random.choice("Random")
'm'
# 從字符串中取值

shuffle(x)

shuffle 用于將列表x中的元素打亂,俗稱為洗牌。會修改原有序列。

>>> poker = ["A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"]
>>> random.shuffle(poker)
>>> poker
['4', '10', '8', '3', 'J', '6', '2', '7', '9', 'Q', '5', 'K', 'A']

sample(sequence, k)

sample 函數(shù)從指定序列中隨機獲取k個元素作為一個列表返回,sample函數(shù)不會修改原有序列。

>>> poker = ["A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"]
>>> random.sample(poker, 5)
['4', '3', '10', '2', 'Q']

可以借助 String 模塊中定義的字符串常量來生成隨機的字符串。

>>> import string
>>> string.digits
'0123456789'    
# 數(shù)字
>>> string.ascii_letters
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
# 大小寫字母
>>> string.punctuation
'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
# 特殊符號

隨機生成賬號:

import string
import random

def generate_user(n):
    '''生成長度為 n 的隨機賬號'''
    # 數(shù)字+大小寫字母組合
    s = string.digits + string.ascii_letters
    words = random.sample(s, n)
    return ''.join(words)

print(generate_user(8))
# 4ruZHV6g
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 相信大家都遇到過這樣的場景,比如創(chuàng)建產(chǎn)品、賬號以及其他的數(shù)據(jù)的時候,會有唯一性限制,因此產(chǎn)品名稱等每次都必須不同,...
    貓與測試閱讀 2,217評論 0 6
  • 今天一個番茄鐘,17-38頁
    Zoe羊閱讀 143評論 0 0
  • 「道 德 經(jīng)」: 第 一 章 道 可 道 , 非 常 道 。 名 可 名 , 非 常 名 。無 名 天 地 之 始...
    漸行漸知閱讀 1,311評論 7 18
  • 我走過陽光燦爛 我走過陰云密布 我走過山河絢麗 又走過泥濘坎坷 山花爛漫時,沒有遇見你 落木蕭蕭時,沒有遇見你 那...
    南方的茶閱讀 299評論 1 1
  • 本次更新:臘梅、杏花、櫻花、玉蘭、梅花、桃花、海棠、丁香 文章內(nèi)容:賞花地點、時間推薦,涵蓋門票、交通路線等信息,...
    淺觴999閱讀 645評論 0 1

友情鏈接更多精彩內(nèi)容