Python自动生成测试数据:Faker库的使用

在进行测试时,经常需要使用一些测试数据。如果手动创建数据,就会花费大量的时间,使用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)

你可能感兴趣的:(Python自动生成测试数据:Faker库的使用)