python-利用random模块生成测试数据封装方法总结
1.前言:
在测试中经常有需要用到参数化,我们可以用random模块,faker模块生成测试数据,也可以用到pymysql,此文主要针对random模块生成任意个数的随机整数,随机字符串,随机手机号,封装成了方法,个人做一个总结,方便以后使用。个人推荐用faker模块,生成数据及其方便,后续更新faker模块
2.基本使用:
#函数介绍:
#(0,1):random.random() --不要传参数,小数
#[a,b]:random.randint(a,b) --整数
#[a,b):random.randrange(a,b) --整数
#(a,b):random.uniform(a,b)
#单例集合随机选择1个:random.choice(item)
#单例集合随机选择n个:random.sample(item,n)
#洗牌单列集合:random.shuffle(item)
#基本举例
import random
print(random.uniform(0,20))
print(random.choice([11,3,-1,56,15,34]))
print(random.sample([11,3,-1,56,15,34],3))
3.实际应用:
3.1 生成任意个数的随机整数
import random
# 生成随机数字
def get_random_int(min,max,count):
'''
:param min: 随机数最小取值范围
:param max: 随机数最大取值范围
:param count: 生成的随机数个数
:return: 生成的随机数列表,个数即(count的值)
'''
random_int_list = []
for i in range(count):
random_int_list.append(random.randint(min,max))
return random_int_list
if __name__=="__main__":
print(get_random_int(10,110,3))
3.2生成任意个数任意长度的随机字符串(生成手机短信验证码可以用这个方法)
import random
# 生成随机字符串
def get_random_str(base_str,str_length,count):
'''
功能:以一列字符串的值作为基准,用他们的组合形成新的随机字符串
说明:外层循环控制生成随机字符串个数,里层循环控制生成的单个随机字符串的长度
:param base_str:基准字符串,后续生成的随机字符串待拼接的值取自于这个基准字符串
:param str_length: 生成单个随机字符串的长度
:param count: 生成随机字符串的个数
:return:
'''
random_str_list = []
for k in range(count):
str1 = ''
for j in range(str_length):
str1 = str1 +base_str[random.randint(0,len(base_str)-1)]
random_str_list.append(str1)
return random_str_list
if __name__=="__main__":
base_str = '2021加油!comeonliujingling'
print(get_random_str(base_str,4,3))
3.3生成任意个数随机手机号
import random
# 生成随机手机号码
def get_rondom_mobile(base_phonenum_zone,count):
'''
说明:
random.sample('0123456789',8)返回的是一个字符串列表
''.join(字符串列表) 作用是将字符传列表中所有的值拼接成一个字符串
功能:生成指定号段的随机手机号
:param base_phonenum_zone: 手机号码号码号段列表,值是字符串类型
:param count: 生成随机手机号个数
:return: 手机号列表,值是字符串类型
'''
phone_num_list = []
for j in range(count):
phone_zone = random.choice(base_phonenum_zone)
phone_end_8_num = ''.join(random.sample('0123456789',8))
phone_num = str(phone_zone) + phone_end_8_num
phone_num_list.append(phone_num)
return phone_num_list
if __name__=="__main__":
print(get_rondom_mobile(['131','132'],3))