python-利用random模块生成测试数据封装方法总结
阅读原文时间:2023年07月09日阅读:1

在测试中经常有需要用到参数化,我们可以用random模块,faker模块生成测试数据,也可以用到pymysql,此文主要针对random模块生成任意个数的随机整数,随机字符串,随机手机号,封装成了方法,个人做一个总结,方便以后使用。个人推荐用faker模块,生成数据及其方便,后续更新faker模块

#函数介绍:
#(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.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))