Faker:假数据生成这件事,一行代码搞定
文章目录
- Faker:假数据生成这件事,一行代码搞定
- 1、这玩意儿是干嘛的
- 2、为什么要用它
- 3、怎么用
- 4、扩展能力
- 5、适合哪些人用
- 5、适合哪些人用
Faker:假数据生成这件事,一行代码搞定
Faker 在 GitHub 上已经拿到 19,267 Star 了。
这是一个 Python 库,专门干一件事:生成假数据。姓名、地址、邮箱、IP、信用卡号、公司名,各种类型都能造,而且支持三十多种语言本地化。
1、这玩意儿是干嘛的
核心能力就一条:用fake.name()、fake.address()这种调用方式,快速生成看起来像真的假数据。
数据库测试需要填充百万条记录?造。前端开发需要模拟用户列表?造。压力测试需要各种边界数据?造。数据脱敏需要替换真实用户信息?还是造。
它把这些场景全覆盖了。
2、为什么要用它
自己手写假数据生成逻辑,写起来烦,维护起来更烦。姓名的姓和名要分开组合,地址要有省市区和邮编,邮箱要符合格式,电话号码要符合区号规则。
Faker 把这些细节全包进去了。你不需要关心中国人名怎么拼,德国地址长什么样,日本的手机号是什么格式。传个 locale 参数就行。
3、怎么用
安装:
pipinstallFaker基础用法:
fromfakerimportFaker fake=Faker()fake.name()# 'Lucy Cechtelar'fake.address()# '426 Jordy Lodge# Cartwrightshire, SC 88120-6700'每次调用都会返回不同的随机结果。还支持批量生成:
for_inrange(10):print(fake.name())需要中文数据?改个参数:
fake=Faker('zh_CN')fake.name()# 生成中文姓名要多种语言混着用?传列表就行:
fake=Faker(['it_IT','en_US','ja_JP'])4、扩展能力
Faker 内置了 providers 机制。除了基础的名址信息,还能生成 IP 地址、信用卡号、公司名、职位、颜色、条形码等等。也可以自己写 provider 扩展:
fromfaker.providersimportBaseProviderclassMyProvider(BaseProvider):deffoo(self):return'bar'fake.add_provider(MyProvider)做测试时经常需要可复现的数据?用 seed:
Faker.seed(4321)print(fake.name())# 每次运行结果一样需要唯一值?用.unique:
names=[fake.unique.first_name()foriinrange(500)]命令行也能直接用:
faker name faker-lzh_CN address faker-r=3-s=";"name5、适合哪些人用
- 写单元测试需要 mock 数据的开发者
- 做数据库压力测试需要批量造数据的工程师
- 前端开发需要模拟真实用户信息的场景
- 做数据脱敏、需要替换生产环境真实数据的团队
5、适合哪些人用
- 写单元测试需要 mock 数据的开发者
- 做数据库压力测试需要批量造数据的工程师
- 前端开发需要模拟真实用户信息的场景
- 做数据脱敏、需要替换生产环境真实数据的团队
