zoukankan      html  css  js  c++  java
  • python3 测试时候如何批量随机生成伪数据?(faker模块的)

    前言

    在测试的过程中,我们经常需要造一些测试数据,比如姓名,手机号,身份证,地址,以及公司信息等测试数据。
    就拿姓名来说,我们平常想到的姓名就是张三,李四,王五这些简单的名字。
    如果领导让我们想一百个姓名,还不能重复,估计得抓掉不少头发了,给自己娃取个名字都得想好几天呢,更别说 100个 了。
    为了让小伙伴门的头发更加茂密,给大家介绍一个造测试数据的利器 Faker 库,可以帮我们随机生成伪数据。

    Faker 安装与介绍

    Faker 是一个 Python 包,主要用来生成伪数据,无需再手动生成或者手写随机数来生成数据,只需要调用 Faker 提供的方法,即可快速完成数据的生成。
    github 项目地址:https://github.com/joke2k/faker
    要求python版本大于等于3.6,pip安装

    pip install Faker
    

    Version: 8.6.0

    基本使用

    随机生成姓名手机号和地址

    from faker import Faker
    
    fake = Faker()
    name = fake.name()
    print(name)  # 英文名
    address = fake.address()
    print(address)
    tel = fake.phone_number()
    print(tel)
    

    运行结果

    Timothy Powell
    (795)901-6065x53012
    655 Flores Garden
    Harrischester, KS 88811
    

    默认是输出英文的,我们可以选择语言,输出多个国家的语言都可以支持

    • 简体中文:zh_CN
    • 繁体中文:zh_TW
    • 美国英文:en_US
    • 英国英文:en_GB
    • 德文:de_DE
    • 日文:ja_JP
    • 韩文:ko_KR
    • 法文:fr_FR

    于是在实例化的时候,设置locale参数为 zh_CN ,本地化输出中文

    fake = Faker(locale="zh_CN")
    name = fake.name()
    print(name)  # 英文名
    tel = fake.phone_number()
    print(tel)
    address = fake.address()
    print(address)
    

    运行结果

    李倩
    15810436027
    吉林省石家庄市金平佛山路v座 454330
    

    常用的生成数据方法

    1.基本信息

    ssn():生成身份证号
    bs():随机公司服务名
    company():随机公司名(长)
    company_prefix():随机公司名(短)
    company_suffix():公司性质
    credit_card_expire():随机信用卡到期日
    credit_card_full():生成完整信用卡信息
    credit_card_number():信用卡号
    credit_card_provider():信用卡类型
    credit_card_security_code():信用卡安全码
    job():随机职位
    first_name_female():女性名
    first_name_male():男性名
    last_name_female():女姓
    last_name_male():男姓
    name():随机生成全名
    name_female():男性全名
    name_male():女性全名
    phone_number():随机生成手机号
    phonenumber_prefix():随机生成手机号段
    

    2.地理信息类

    fake.city_suffix():市,县
    fake.country():国家
    fake.country_code():国家编码
    fake.district():区
    fake.geo_coordinate():地理坐标
    fake.latitude():地理坐标(纬度)
    fake.longitude():地理坐标(经度)
    fake.postcode():邮编
    fake.province():省份
    fake.address():详细地址
    fake.street_address():街道地址
    fake.street_name():街道名
    fake.street_suffix():街、路
    

    3.网络基础信息类

    domain_name():生成域名
    domain_word():域词(即,不包含后缀)
    ipv4():随机IP4地址
    ipv6():随机IP6地址
    mac_address():随机MAC地址
    tld():网址域名后缀(.com,.net.cn,等等,不包括.)
    uri():随机URI地址
    uri_extension():网址文件后缀
    uri_page():网址文件(不包含后缀)
    uri_path():网址文件路径(不包含文件名)
    url():随机URL地址
    user_name():随机用户名
    image_url():随机URL地址
    

    4.邮箱类

    ascii_company_email():随机ASCII公司邮箱名
    ascii_email():随机ASCII邮箱:
    company_email():
    email():
    safe_email():安全邮箱
    

    5.浏览器参数

    chrome():随机生成Chrome的浏览器user_agent信息
    firefox():随机生成FireFox的浏览器user_agent信息
    internet_explorer():随机生成IE的浏览器user_agent信息
    opera():随机生成Opera的浏览器user_agent信息
    safari():随机生成Safari的浏览器user_agent信息
    linux_platform_token():随机Linux信息
    user_agent():随机user_agent信息
    

    6.时间信息类

    date():随机日期
    date_between():随机生成指定范围内日期,参数:start_date,end_date
    date_between_dates():随机生成指定范围内日期,用法同上
    date_object():随机生产从1970-1-1到指定日期的随机日期。
    date_time():随机生成指定时间(1970年1月1日至今)
    date_time_ad():生成公元1年到现在的随机时间
    date_time_between():用法同dates
    future_date():未来日期
    future_datetime():未来时间
    month():随机月份
    month_name():随机月份(英文)
    past_date():随机生成已经过去的日期
    past_datetime():随机生成已经过去的时间
    time():随机24小时时间
    timedelta():随机获取时间差
    time_object():随机24小时时间,time对象
    time_series():随机TimeSeries对象
    timezone():随机时区
    unix_time():随机Unix时间
    year():随机年份
    

    7.数字

    numerify():三位随机数字
    random_digit():0~9随机数
    random_digit_not_null():1~9的随机数
    random_int():随机数字,默认0~9999,可以通过设置min,max来设置
    random_number():随机数字,参数digits设置生成的数字位数
    pyfloat():
    left_digits=5 #生成的整数位数, right_digits=2 #生成的小数位数, positive=True #是否只有正数
    pyint():随机Int数字(参考random_int()参数)
    pydecimal():随机Decimal数字(参考pyfloat参数)
    

    8.文本、加密类

    pystr():随机字符串
    random_element():随机字母
    random_letter():随机字母
    paragraph():随机生成一个段落
    paragraphs():随机生成多个段落
    sentence():随机生成一句话
    sentences():随机生成多句话,与段落类似
    text():随机生成一篇文章
    word():随机生成词语
    words():随机生成多个词语,用法与段落,句子,类似
    binary():随机生成二进制编码
    boolean():True/False
    language_code():随机生成两位语言编码
    locale():随机生成语言/国际 信息
    md5():随机生成MD5
    null_boolean():NULL/True/False
    password():随机生成密码,可选参数:length:密码长度;special_chars:是否能使用特殊字符;digits:是否包含数字;upper_case:是否包含大写字母;lower_case:是否包含小写字母
    sha1():随机SHA1
    sha256():随机SHA256
    uuid4():随机UUID
    

    9.其它python方法

    profile():随机生成档案信息
    simple_profile():随机生成简单档案信息
    pyiterable()  迭代器
    pylist()   列表
    pyset()   集合
    pystruct()  结构体
    pytuple()  元祖
    pydict()  字典
    

    使用示例

    随机生成10个姓名,手机号,邮箱

    from faker import Faker
    # 作者-上海悠悠 QQ交流群:717225969
    # blog地址 https://www.cnblogs.com/yoyoketang/
    
    
    fake = Faker(locale="zh_CN")
    for i in range(10):
        print(fake.name(), fake.phone_number(), fake.email())
    

    运行结果

    邹秀兰 15164333244 xiulanzhang@zhu.cn
    宗雪梅 15382152191 jiezeng@92.cn
    张宇 18075094320 qiang06@kang.cn
    查秀华 14553388098 guiyingliang@chao.cn
    马秀梅 15168273409 qshao@87.org
    林雪梅 13668754918 kli@80.cn
    姜磊 18859556684 taoliang@fo.net
    陈倩 18711435014 sunyong@10.cn
    韩林 13221548693 yfan@46.cn
    王刚 13516026777 jie47@yahoo.com
    
  • 相关阅读:
    November 13th 2016 Week 47th Sunday The 1st Day
    November 12th 2016 Week 46th Saturday
    November 11th 2016 Week 46th Friday
    November 10th 2016 Week 46th Thursday
    November 9th 2016 Week 46th Wednesday
    November 8th 2016 Week 46th Tuesday
    windows 7文件共享方法
    Win7无线网络共享设置方法
    常量指针和指针常量
    如何查找局域网的外网ip
  • 原文地址:https://www.cnblogs.com/yoyoketang/p/14869348.html
Copyright © 2011-2022 走看看