Python 生成测试数据 - faker 模块
Faker 是一个生成数据的 Python 库,Faker 数据通常用于生成测试数据。
初始化操作
首先需要安装 faker 模块
shell
pip install faker
faker.Faker()
创建并初始化一个伪造的生成器,该伪造器可以通过访问以数据类型命名的属性来生成数据。
Faker 将数据生成委托给提供者。默认提供程序使用英语语言环境,实例化对象是传入 zh-CN
的参数就可以生成中文数据了。
python
>>> from faker import Faker
>>> faker = Faker('zh-CN')
>>> faker.name()
'凌斌'
>>> faker.address()
'福建省晶县沈河胡街y座 456451'
>>> faker.text()
'您的详细朋友建设的是商品.这么规定继续美国.\n事情品牌图片一次开发.游戏世界出现根据大学单位两个.\n这里下载精华起来一切你的.不会留言生活方法注册男人有关男人.\n结果能够觉得已经.人民次数出来他们准备.\n学校图片然后正在.今年公司科技.关系的人查看软件他的目前.\n生活发布法律只是历史教育.品牌提供全部而且品牌今天文化.\n关系重要虽然留言方法作者看到.包括资源语言精华.'
生成个人信息
python
>>> faker.first_name()
'建国'
>>> faker.last_name()
'段'
>>> faker.name_male() # 男性的名字
'姜帅'
>>> faker.name_female()
'吕颖'
>>> faker.simple_profile() # 个人数据
{'username': 'dsun', 'name': '徐慧', 'sex': 'F', 'address': '西藏自治区宜都县花溪张路j座 199106', 'mail': 'weizheng@gmail.com', 'birthdate': datetime.date(1979, 4, 23)}
>>> faker.simple_profile('M') # 男性个人数据
{'username': 'vluo', 'name': '徐建平', 'sex': 'M', 'address': '安徽省慧市璧山佛山路S座 507175', 'mail': 'pwang@hotmail.com', 'birthdate': dat
etime.date(1935, 2, 13)}
>>> faker.profile(sex='F') # 女性个人数据
{'job': '美发店长', 'company': '凌云信息有限公司', 'ssn': '220524197612218387', 'residence': '山西省明市崇文杨路h座 343802', 'current_location': (Decimal('28.6007725'), Decimal('-54.516287')), 'blood_group': 'B-', 'website': ['http://42.cn/', 'https://yongtao.com/', 'http://fanggang.com/'], 'username': 'jiedeng', 'name': '万亮', 'sex': 'F', 'address': '云南省长沙市朝阳辽阳路H座 563507', 'mail': 'wei00@hotmail.com', 'birthdate': datetime.date(2003, 10, 22)}
工作信息
python
>>> faker.job() # 工作职位
'餐饮服务员'
>>> faker.address() # 地址
'香港特别行政区兴安盟县平山王路T座 842650'
互联网相关数据
python
>>> faker.email()
'nalai@example.org'
>>> faker.safe_email()
'qiang33@example.org'
>>> faker.free_email()
'qiang55@yahoo.com'
>>> faker.company_email()
'xuexia@dai.cn'
>>> faker.domain_name()
'changsu.cn'
>>> faker.domain_word()
'changsu'
>>> faker.tld()
'cn'
>>> faker.ipv4()
'157.189.59.13'
>>> faker.ipv6()
'c1c2:3782:ee5a:336:8b44:b463:411:f7a6'
>>> faker.mac_address()
'd6:ca:7d:97:d4:30'
>>> faker.image_url()
'https://placekitten.com/985/464'
日期和时间
python
>>> faker.date_of_birth()
datetime.date(1918, 11, 6)
>>> faker.century()
'XIII'
>>> faker.year()
'2022'
>>> faker.month()
'11'
>>> faker.month_name()
'四月'
>>> faker.day_of_week()
'星期二'
>>> faker.day_of_month()
'12'
>>> faker.timezone()
'Africa/Douala'
>>> faker.am_pm()
'AM'
生成日期时,还可以限定范围
python
>>> from datetime import datetime
>>> datetime.now()
datetime.datetime(2023, 9, 5, 4, 34, 5, 528030)
>>> faker.date_time_this_century()
datetime.datetime(2013, 1, 31, 3, 39, 28)
>>> faker.date_time_this_decade()
datetime.datetime(2021, 6, 8, 6, 56, 26)
>>> faker.date_time_this_year()
datetime.datetime(2023, 2, 24, 21, 15, 10)
>>> faker.date_time_this_month()
datetime.datetime(2023, 9, 1, 5, 43, 1)
>>> faker.date_this_century()
datetime.date(2009, 4, 20)
>>> faker.date_this_decade()
datetime.date(2022, 12, 27)
>>> faker.date_this_year()
datetime.date(2023, 3, 21)
>>> faker.date_this_month()
datetime.date(2023, 9, 4)
还可以生成用于各种日期时间格式,获取选定范围的日期时间值以及生成未来或过去值的方法。
python
>>> faker.unix_time()
1445442052
>>> faker.date_time()
datetime.datetime(1992, 10, 19, 10, 24, 7)
>>> faker.iso8601()
'1977-09-09T18:27:14'
>>> faker.date()
'2000-11-12'
>>> faker.time()
'05:13:29'
>>> faker.date_time_between(start_date='-15y', end_date='now')
datetime.datetime(2017, 8, 9, 11, 31, 52)
>>> faker.date_between()
datetime.date(2009, 1, 3)
>>> faker.future_datetime()
datetime.datetime(2023, 9, 6, 16, 35, 44)
>>> faker.future_date()
datetime.date(2023, 10, 2)
>>> faker.past_datetime()
datetime.datetime(2023, 8, 15, 5, 6, 35)
>>> faker.past_date()
datetime.date(2023, 8, 30)
其他信息
哈希值
python
>>> faker.md5()
'46572a2c48ef9e500ca35b2cd780c058'
>>> faker.sha1()
'41f80ea542e804feb1749e843375c32e1203ccf0'
>>> faker.sha256()
'7edda6146045816052b53e035c020241cbe426f2b4f6ef8031ec7fe7ea481f18'
>>> faker.uuid4()
'c7dee7c4-779b-4e7d-a3f1-ff5b3df8a434'
货币信息
python
>>> faker.currency()
('NZD', 'New Zealand dollar')
>>> faker.currency_name()
'Zealand dollar'
>>> faker.currency_code()
'NZD'
生成单词
python
>>> faker.word()
'孩子'
>>> faker.words(6)
['类别', '直接', '为什', '如此', '说明', '要求']
生成数字
python
>>> faker.random_int() # 随机生成
2477
>>> faker.random_int(0, 100) # 限定范围
58
>>> faker.random_digit() # 一个数字
6