在进行测试时,经常需要使用一些测试数据。如果手动创建数据,就会花费大量的时间,使用faker模块就可以帮助我们自动创建随机模拟数据。
什么是Faker?
faker是一个开源的python库,安装完成后只需要调用Facker库,就可以帮助我们创建需要的数据。
源码地址:https://github.com/joke2k/faker
Faker安装
pip install faker
Faker的基本使用
from faker import Faker # 导入Faker
faker = Faker()
name = faker.name() # 调用faker方法生产随机数据
print(name)
# 输出
Andrew Torres
faker默认使用的是英语,可以通过设置地域更改语言。
可支持设置的语言如下:
ar_EG - Arabic (Egypt)
ar_PS - Arabic (Palestine)
ar_SA - Arabic (Saudi Arabia)
bg_BG - Bulgarian
bs_BA - Bosnian
cs_CZ - Czech
de_DE - German
dk_DK - Danish
el_GR - Greek
en_AU - English (Australia)
en_CA - English (Canada)
en_GB - English (Great Britain)
en_NZ - English (New Zealand)
en_US - English (United States)
es_ES - Spanish (Spain)
es_MX - Spanish (Mexico)
et_EE - Estonian
fa_IR - Persian (Iran)
fi_FI - Finnish
fr_FR - French
hi_IN - Hindi
hr_HR - Croatian
hu_HU - Hungarian
hy_AM - Armenian
it_IT - Italian
ja_JP - Japanese
ka_GE - Georgian (Georgia)
ko_KR - Korean
lt_LT - Lithuanian
lv_LV - Latvian
ne_NP - Nepali
nl_NL - Dutch (Netherlands)
no_NO - Norwegian
pl_PL - Polish
pt_BR - Portuguese (Brazil)
pt_PT - Portuguese (Portugal)
ro_RO - Romanian
ru_RU - Russian
sl_SI - Slovene
sv_SE - Swedish
tr_TR - Turkish
uk_UA - Ukrainian
zh_CN - Chinese (China)
zh_TW - Chinese (Taiwan)
比如设置成中文:f = Faker("zh_CN")
from faker import Faker
faker = Faker("zh_CN") # 设置中文
name = faker.name()
print(name)
# 输出
陈兰英
Faker把Provider对象做成了Faker对象的“插件”,Faker通过内置的Provider对象,实现了生成某项数据的能力。
可以通过查看源码内的Provider查看可以哪些方法https://github.com/joke2k/faker/tree/master/faker/providers
Faker使用举例
date_time
用于生成时间相关数据,用法如下:
# date 随机日期
faker.date()
# 1976-12-19
# time 随机生成24小时时间时间
faker.time()
# 00:45:16
# 生成范围内日期
faker.date_between(start_date="-30y", end_date="today")
# 2010-06-06
# 生成未来日期
faker.future_date()
# 2021-11-05
#生成未来时间
faker.future_datetime()
# 2021-11-01 07:14:01
# 生成过去时间
faker.past_datetime()
# 2021-09-19 06:45:49
#随机年份
faker.year()
# 1972
# 随机月份
faker.month()
# 03
Lorem
生成假文字数据。用法如下:
#随机生成一段长文本
faker.text( max_nb_chars=50) 参数 max_nb_chars 设置最大字符数
#全部系列具有一种.比较文化个人教育.当然相关一下国内.出来阅读进入新闻.
faker.texts(nb_texts=3, max_nb_chars=10) 参数 nb_texts 设置条数,返回数组形式
#['能够浏览基本应用.', '时候不是投资提供.', '成为免费什么客户.']
#随机生成词语
faker.word()
# 我的
faker.words(nb=4)
# ['广告', '应用', '以及', '以及']
Address
生成和地址相关的数据
# 详细地址
faker.address()
# 河北省成都市友好香港路Z座 335219
#邮编
faker.postcode()
# 190924
# 省份
faker.province()
# 四川省
# 街道地址
faker.street_address()
# 太原街R座
company
生成公司信息
faker.company()
# 天开信息有限公司
person
生成名字等
# 生成人名信息
faker.name()
# 许霞
生成数字类信息
# 生成信用卡信息
faker.credit_card_number()
# 344149812642775
# 生成手机号
faker.phone_number()
# 13169568860
#随机生成数字
faker.random_number(digits=18) 参数 digits表示位数
# 713809394532507011
# 生成范围内的随机数
faker.random_int(min=10, max=20) 参数 min,max 最大最小
生成随机集合类型
faker.pylist()
# ['glYoMUOFCtwXqfKKKhGp', 'UULQpBAtnGKOwRvlVvjM', datetime.datetime(2021, 7, 21, 17, 50, 17), 3332, -1152054595983.53, '[email protected]']
faker.pytuple()
# ('AcOcyXkqTkDUgxsdJHVI', 'EFeFJBtTnBFKTMBjUkxS', 8305, 2943, 'http://es.cn/blog/app/terms.asp', 1108, 'vcZSkOSGtDunoZykgJeR', 'aMpBmnUVjlQZSaMpNRDX')
faker.pydict()
# {'销售': 'HqsvtUfPkPmLOWVVOegs', '专业': 7138, '您的': 'eSKZBLsSupgIwzBnEUNm', '作为': '[email protected]', '经济': 7722, '时候': '[email protected]', '介绍': 'https://www.nayang.cn/search/app/faq.htm', '包括': 'zruhdcpYPQGIrPZlFqmu'}
faker.pyset()
# {'GIBkSoOzrhMauAEqQuPn', 'RVCLTNEgmMnLSjVkJKCj', 6955, 'cvACvNREQOdNQCQUGAns', 'uwlNvCgjSQCgfWwOppgS', 'KkIBsdxdzFgGkaNtOIuS'}
设置seed
设置seed可以保证每次取到的数字是一样的,添加Faker.seed()实现,用法如下:
from faker import Faker
Faker.seed(1222)
faker = Faker("zh_CN")
date2 = faker.name()
print(date2)