Faker-Python强大的数据生成库

在系统开发过程中,不管作为开发还是测试,我们都要造一些假数据到系统中,来模拟真实环境的运行。比如要创建一批用户,输入一些车牌,或者是电话号码,或者是街道地址等等。平时我们基本是键盘一顿乱敲,随便造个什么玩意出来,当然谁也不认识谁。现在你不要这样做了,用Faker就能满足你的一切需求。

1.安装

 pip install Faker

2.示例

>>> from faker import Faker
>>> fake = Faker(locale='zh_CN')
>>> fake.name()
'万辉'
>>> fake.address()
'xxxxxxxxxx座 865678'

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

3.2 基础信息类
ssn():生成身份证号
bs():随机公司服务名
company():随机公司名(长)
company_prefix():随机公司名(短)
company_suffix():公司性质,如'信息有限公司'
credit_card_expire():随机信用卡到期日,如'03/30'
credit_card_full():生成完整信用卡信息
credit_card_number():信用卡号
credit_card_provider():信用卡类型
credit_card_security_code():信用卡安全码
job():随机职位
first_name_female():女性名
first_name_male():男性名
name():随机生成全名
name_female():男性全名
name_male():女性全名
phone_number():随机生成手机号
phonenumber_prefix():随机生成手机号段,如139

3.3 邮箱信息类
ascii_company_email():随机ASCII公司邮箱名
ascii_email():随机ASCII邮箱:
company_email():公司邮箱
email():普通邮箱
safe_email():安全邮箱

3.4 网络基础信息类
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地址

3.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信息

3.6 数字信息
numerify():三位随机数字
random_digit():0~9随机数
random_digit_not_null():1~9的随机数
random_int():随机数字,默认0~9999,可以通过设置min,max来设置
random_number():随机数字,参数digits设置生成的数字位数
pyfloat():随机Float数字
pyint():随机Int数字(参考random_int()参数)
pydecimal():随机Decimal数字(参考pyfloat参数)

3.7 文本加密类
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

3.8 时间信息类
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():随机年份

4. 实战使用

import pymysql
from faker import Faker

conn = pymysql.connect(host="114.215.129.166", port=3306, user="nice", password="", db="flask201",
                       charset="utf8")

cursor = conn.cursor()
sql1 = """drop table if exists faker_user"""
sql2 = """
create table faker_user(
pid int primary key auto_increment,
username varchar(20),
password varchar(20),
address varchar(35) 
)
"""
cursor.execute(sql1)
cursor.execute(sql2)
fake = Faker("zh-CN")
for i in range(20):
    sql = """insert into faker_user(username,password,address) 
    values('%s','%s','%s')""" % (fake.name(), fake.password(special_chars=False), fake.address())
    cursor.execute(sql)

conn.commit()
cursor.close()
conn.close()

 

地址相关方法

这里需要注意,有些方法是有地区倾向的,比如 province() 在中文中可以正常获取,但是在其他语种中可能会报错。

fake.building_number() # 楼栋名称# 'U座'
fake.postcode() # 邮政编码# 257897
fake.street_address() # 街道地址# 吴路e座
fake.street_name() # 街道名称# 嘉禾路

条形码相关方法

fake.ean(length=13)    # EAN条形码# '5427745056706'
fake.ean13() # EAN13条形码# '0937312282094'
fake.ean8() # EAN8条形码# '52227936'

颜色相关方法

fake.color_name()        # 颜色名称# 'White'
fake.hex_color() # 颜色十六进制值# '#f5db7c'
fake.rgb_color() # 颜色RGB值# '15,240,40'

货币相关方法

fake.cryptocurrency() #加密货币代码+名称# ('AMP', 'AMP')
fake.cryptocurrency_code() # 加密货币代码# 'XMR'
fake.cryptocurrency_name() # 加密货币名称# 'Feathercoin'
fake.currency() # 货币代码+名称('SEK', 'Swedish krona')
fake.currency_code() # 货币代码# 'CRC'
fake.currency_name() # 货币名称# ''Mozambican metical'

时间相关方法

fake.date(pattern="%Y-%m-%d", end_datetime=None)  # 日期字符串(可设置格式和最大日期)# '1992-02-13'
fake.date_between(start_date="-7y", end_date="today") # 日期(可设置限定范围)# datetime.date(2017, 1, 24)
fake.date_of_birth(tzinfo=None, minimum_age=0, maximum_age=100) # 出生日期(可设置最大最小年龄)# datetime.date(1964, 2, 27)
fake.date_this_month(before_today=True, after_today=False) # 本月中的日期# datetime.date(2020, 7, 1)
fake.time(pattern="%H:%M:%S", end_datetime=None) # 时间(可设置格式和最大时间)# '13:00:18'
fake.timezone() # 时区# 'Africa/Kampala''

坐标相关方法

fake.latlng()           # 经纬度# (Decimal('-84.6293375'), Decimal('106.942208'))
fake.local_latlng(country_code="CN", coords_only=False) # 返回某个国家某地的经纬度# ('46.51872', '86.00214', 'Hoxtolgay', 'CN', 'Asia/Urumqi')

联系方式相关方法

fake.phone_number()       # 手机号# '13920149907'
fake.email(*args, **kwargs) # caixiulan@35.cn'

文本相关方法

fake.paragraph(nb_sentences=3, variable_nb_sentences=True, ext_word_list=None)    # 单个段落# '法律国际评论网站这是.个人其他不断报告公司.'
fake.text(max_nb_chars=200, ext_word_list=None) # 单个文本# '起来以后文章所以自己.一直一定以上电子.\n然后开始问题出来已经.信息这个空间各种经营.\n到了所有需要介绍支持.方式建设专业就是经营更多.主要功能比较事情帮助.\n之后点击成为选择资密码部分.'
fake.md5(raw_output=False) # Md5# '3f9824429336952484a70de210f0794f'
fake.password(length=10, special_chars=True, digits=True, upper_case=True, lower_case=True) # 密码# 'xNGUixHi$1'
fake.uuid4()# 'a70b41c0-ccdb-4dd0-9c9b-9b650fa72a49'

python 相关方法

最后,我们来看看 python 相关的方法,可以为我们写测试方法提供一些方便。

fake.pydict(nb_elements=10, variable_nb_elements=True)    # Python字典# {'女人': 'EsiJkxQOIyMEKMBLiraE', '系列': 'shenxiulan@gmail.com', '操作': 'VGiviSlGVputFAUSWfdL', '不过': 'CZJaxfxXXIDFOThUxxOR', '得到': 3637, '搜索': Decimal('-292113.66项目': datetime.datetime(2000, 1, 12, 0, 54, 5), '那些': 'SbQuGqOGEnFhdPEYRrou', '虽然': 'EvRyxlmTgrrhrVWxMXIu', '方面': -1623419454707.4, '历史': 'jsun@hotmail.com', '对//moxiang.cn/', '社区': 'http://lei.cn/'}
fake.pyiterable(nb_elements=10, variable_nb_elements=True) # Python可迭代对象# ['llyMSqurkCSNUwLcNJQg', 'bUxhBPmxovfOXixprnCr', 'nDNAnBFUWnqFTzJAPoYZ', 'aygoBknQESmPeMTdVoxz', 6393, 'http://ef.cn/category/posts/register/']
fake.pystruct(count=3) # Python结构# (['https://jieduan.cn/author/', 2690, 'http://litao.cn/category/'], {'还是': datetime.datetime(2000, 8, 20, 22, 17, 30), '一直': 9796, '音乐': 'https://www.laizhou.cn/hom{'全部': {0: 6397, 1: [Decimal('833148.6'), datetime.datetime(2014, 2, 10, 20, 27, 58), 2722], 2: {0: datetime.datetime(1977, 5, 16, 17, 32, 12), 1: 'WoIPYqFCHtXyQpbOJIBP 2: ['yLJmsrTnTksLqBmMhDul', datetime.datetime(2005, 2, 4, 6, 52, 20)]}}, '大小': {1: 'huangjun@gmail.com', 2: ['KLTasWcxRxpkodwDAaWn', 'kgmVQfTcQWSRWeznRLiC', 46.727079]3: {1: 'LNYNQybvzxVtioHSpdEC', 2: 'KtAnXvEEEoQjNuIORdul', 3: [8000, 52227.700775]}}, '地区': {2: 'junxiao@jingxia.cn', 3: ['zhaona@jiemo.net', 'DHKalOGzfcDKSZtTRLsK', 'doGiBbxvuKAuqrIPpS'], 4: {2: 9444, 3: 'RSqhHYIdViwynTTaIjuE', 4: [1515, 6512]}}})
posted @ 2022-04-22 00:47  小涛lct  阅读(168)  评论(0)    收藏  举报