Python随机函数库random

自动化测试时,有如下一些情况:

  1. 注册账号时,如果已经注册过的账号,再次运行脚本时就会失败。
    为了避免这种情况,我们可以使用时间戳或者随机函数增加一些随机内容。
  2. 界面上有很多数据,我们不关注具体数据的执行结果,只关注操作过程。
    我们就可以批量提取数据(find_elements),然后随机选择一条数据操作。

这些情况都会用到随机函数库。

Python 中的随机函数库 random,提供了各种随机数据生成(int、float、string、list等)。

random库是 Python 自带的一个标准库。直接引入即可使用。

import random

该库中主要函数如下:

random()

生成一个0 ~ 1之间的随机浮点数,范围 0 <= n < 1.0

注意,函数名也叫 random, 和库名一样。

>>> random.random()
0.5449476270094615

uniform(a, b)

uniform 方法, 返回 a 到 b 之间的随机浮点数,范围 [a, b] 或 [a, b),取决于四舍五入,a不一定要比b小。

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

randint(a, b)

randint 方法, 返回a 到 b之间的整数,范围 [a, b],注意:传入参数必须是整数,a 一定要比 b 小。

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

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

randrange 函数返回一个区间内的整数,可以设置step。

注意,只能传入整数。

random.randrange(10, 100, 2)
16
# 结果相当于从[10, 12, 14, 16, … 96, 98]序列中获取一个随机数。

startstop 参数是可选参数。

>>>random.randrange(100)
58
# 随机取 0 到 100 中的一个整数
>>> random.randrange(80, 100)
99
# 随机取 80 到 100 之间的一个整数

choice(sequence)

choice 从序列 sequence中随机获取一个元素,list,tuple,字符串都属于序列。

random.randrange(10, 100, 2) 在结果上与 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 函数从指定序列中随机获取k个元素作为一个列表返回,sample函数不会修改原有序列。

>>> 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'    
# 数字
>>> string.ascii_letters
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
# 大小写字母
>>> string.punctuation
'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
# 特殊符号

随机生成账号:

import string
import random

def generate_user(n):
    '''生成长度为 n 的随机账号'''
    # 数字+大小写字母组合
    s = string.digits + string.ascii_letters
    words = random.sample(s, n)
    return ''.join(words)

print(generate_user(8))
# 4ruZHV6g

你可能感兴趣的:(Python随机函数库random)